我想要澄清一下MySQL 5.5中默認值的行爲& 5.6。比方說,我們有一個MySQL 5.5服務器上的如下表:MySQL 5.5和5.6默認值
CREATE TABLE `test` (
`TestColumn` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=INNODB DEFAULT CHARSET=utf8;
我能沒有問題,運行下面的查詢:
INSERT INTO `test` VALUES (NULL);
它創建以下行:
TestColumn
2014-02-20 14:55:05
現在,如果我在MySQL 5.6服務器上重複相同的測試,插入失敗:
Error Code: 1048
Column 'TestColumn' cannot be null
我知道5.6(http://dev.mysql.com/doc/refman/5.6/en/timestamp-initialization.html)中的時間戳自動初始化發生了變化,但我無法解決的是如何複製5.6中5.5中看到的行爲。
不確定它是否重要,但我們的5.6服務器將explicit_defaults_for_timestamp設置爲ON。
理想情況下,我所追求的是解決方案,但如果任何人有更好的理解,並且可以解釋它,那也是有用的。
謝謝。
編輯:我們正在使用MySQL 5.6.13
第一次插入不應該在第一個地方工作。你要求數據庫將NULL值放入非空列,所以5.6拒絕這一點。 –
這適用於5.6 – bear
@a_horse_with_no_name定義是該列不能爲空 - 但是,如果提供了默認值,它將使用默認值。編輯,從頭開始 – bear