2014-01-17 29 views
1

我在Ubuntu 13.04上運行了Percona的mysql fork(5.6.15)。花費時間太長嘗試調試一個問題,我們的ETL過程中的一個之後,我發現MySQL的是修改我創建表的語法:自動(不需要)在MySQL更新觸發器?

mysql> CREATE TABLE test (test TIMESTAMP); 
Query OK, 0 rows affected (0.03 sec) 

mysql> show create table test\G 
*************************** 1. row *************************** 
     Table: test 
Create Table: CREATE TABLE `test` (
    `test` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 
1 row in set (0.01 sec) 

mysql> 

我不希望這對觸發更新,我發現我可以通過將該列設置爲'TIMESTAMP NULL'來解決此問題,但我也不希望此字段爲空。

我完全脫離基地或應該不會發生?有沒有人遇到過這個?這是我不知道的一些設置,或者這可能是一個錯誤(我知道他們改變了5.6中的時間戳字段的一些行爲)?

回答

1

這不是一個錯誤,它只是表中的第一個時間戳列(如果沒有另外指定)獲取這些屬性。你會添加另一個時間戳列,它不會得到這些屬性。在manual中閱讀更多關於它的內容。如果你真的有問題,可能是日期時間而不是時間戳列會是一個選項?

+0

我的谷歌福已經失敗了,謝謝先生。我已選擇更改explicit_defaults_for_timestamp系統變量以停止此行爲:http://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html#sysvar_explicit_defaults_for_timestamp – Conslo