2013-03-25 64 views
1

我是新来Symfony和学说,并希望得到一些帮助...Symfony的2学说Oracle模式同步

我连接学说在Oracle 11g数据库。

我已经创建了一个表/实体包含null的日期字段。

中的字段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 

描述的数据库模式反映的字段与空的默认值可为空日期的状态。

是我遇到的问题是,我不能让学说认识到数据库和meta描述是同步的。

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。这就是我们将其映射到Doctrine的日期时间类型的原因。

作为解决方法,您可以使用以下方法设置此信息: $ conn-> getDatabasePlatform() - > registerDoctrineTypeMapping('date','date'); 请注意,这是所有栏目的全球变化。如果您将DateTimes映射到TIMESTAMP字段,那么您很好。

+0

谢谢你的快速反应,这个回答我的问题。我已经找到了一个类似的问题与改变从不可为空列可空。由doctrine生成的代码将默认值设置为null,但不会更改列的可空状态。 'ALTER TABLE MET MODIFY(METAR VARCHAR2(2000)DEFAULT NULL)' – 2013-03-26 11:24:56