2013-03-25 63 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