2013-03-25 2 views
1

Я новичок в Symfony и доктриной и был бы признателен за помощь ...Symfony 2 Доктрина Oracle схема синхронизации

я подключаю доктрину к базе данных Oracle 11g.

Я создал таблицу/объект, который содержит поля с нулевыми датами.

Поле описаны в YAML, таким образом,

metar_time: 
     type: date 
     nullable: true 
     column: METAR_TIME 
    taf_time: 
     type: date 
     nullable: true 
     column: TAF_TIME 
    ltaf_time: 
     type: date 
     nullable: true 
     column: LTAF_TIME 
    storage_date: 
     type: date 
     nullable: true 
     column: STORAGE_DATE 

Схема базы данных отражает состояние полей как обнуляемая дата со значением по умолчанию NULL.

Проблема, с которой я сталкиваюсь, заключается в том, что я не могу заставить доктрину признать, что база данных и мета-описание синхронизированы.

php app/console doctrine:schema:update --dump-sql 
ALTER TABLE MET MODIFY (LTAF_TIME DATE DEFAULT NULL, METAR_TIME DATE DEFAULT NULL, STORAGE_DATE DATE DEFAULT NULL, TAF_TIME DATE DEFAULT NULL); 


php app/console doctrine:schema:update --force 
Updating database schema... 
Database schema updated successfully! "1" queries were executed 

Однако, если я снова запустил sql-дамп, обновление все еще остается выдающимся.

Я очистил все тайники, чтобы решить это как проблему.

Любые предложения приветствуются!

ответ

1

Это известная проблема. Проверить Incorrect type mapping on Oracle Platform

Некоторые реф:

Проблема заключается в том, что Oracle имеет тип "DATE", который на самом деле является DATETIME. Вот почему мы сопоставляем его с типом Datetime доктрины.

Как обходной путь, вы можете установить эту информацию самостоятельно, используя: $ conn-> getDatabasePlatform() -> registerDoctrineTypeMapping ('date', 'date'); Знайте, что это глобальное изменение для всех столбцов. Если вы сопоставляете DateTimes с полем TIMESTAMP, вы можете продолжить.

+0

Благодарим за быстрый ответ, это ответили на мой вопрос ... Я нашел аналогичную проблему с изменением столбца от не до нуля до нулевой. Код, созданный доктриной, устанавливает значение по умолчанию равным null, но не меняет статус столбца с нулевым значением. 'ALTER TABLE MET MODIFY (METAR VARCHAR2 (2000) DEFAULT NULL)' –

Смежные вопросы