2013-09-21 97 views
0

在RDS我最近創建我的督促數據庫的轉儲並創建了一個臨時的MySQL 5.6數據庫使用下面的命令:的Django 1.4和MySQL 5.6

mysqldump -u user --password=password -h host db_name | gzip -c > mysql.sql.gz 
gunzip mysql.sql.gz 
mysql -u user --password=password -h host db_name < mysql.sql 

,一切運行良好。在一個問題,我注意到的是,我的應用程序(Django的1.4),創建被定義爲按照以下時間戳:

`last_modified` timestamp NOT NULL ON UPDATE CURRENT_TIMESTAMP, 

此前在MySQL 5.5,這是罰款。但在5.6中,last_modified的不被解釋爲當前值。無論如何要處理這個問題?我所有的車型都有這個問題....

編輯

我更新了上述領域:

alter table my_table modify last_modified timestamp DEFAULT CURRENT_TIMESTAMP 

但插入時,Django的具有該領域的null。之前將null轉換爲當前時間戳,現在它在該字段中僅顯示爲null。有沒有辦法強制MySQL將null解釋爲當前時間戳?聲明爲NOT NULL,並沒有明確的DEFAULT 條款

+0

可以顯示正在生成的Django插入查詢和MySQL將作爲示例表的create語句顯示的SQL嗎? – aniav

+0

該查詢對時間戳字段具有「空」。這是因爲它被設置爲「不爲空」而沒有工作。我的解決方案是一個自定義字段,我提供默認時間(當前時間) – KVISH

回答

4

從MySQL文檔Upgrading from MySQL 5.5 to 5.6

TIMESTAMP列被視爲沒有默認值。對於 爲這樣的列指定沒有明確值的插入行,結果取決於SQL模式。如果啓用嚴格的SQL模式,則會發生錯誤。如果嚴格 SQL模式未啓用,則爲該列分配默認的 '0000-00-00 00:00:00',併發生警告。這與MySQL如何對待其他時態類型(如DATETIME)類似。

所以,你應該設置CURRENT_TIMESTAMP作爲DEFAULT此字段,ON UPDATE是不夠的。

+0

請參閱我的更新...仍似乎工作.. – KVISH