mysql 初始化 timestamp,提示 Invalid default value for 'xxx'


【問題】在新建一個表的時候,初始化一個 timestamp 為 '0000-00-00 00:00:00' 時:

  1. CREATE TABLE `test` (
  2. `created_on` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  3. `last_updated_on` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  4. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  5. PRIMARY KEY (`id`)
  6. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

報錯:ERROR 1067 (42000): Invalid default value for 'last_updated_on'

【解決方法】:

去掉 sql_mode 中的 values: NO_ZERO_IN_DATE,NO_ZERO_DATE 即可:

show variables like 'sql_mode';

修改 sql_mode:

  1. set session
  2. sql_mode= 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

Query OK, 0 rows affected, 1 warning (0.00 sec)

查看修改的結果:

show variables like 'sql_mode';

這個時候再執行建表命令,就正常了:)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM