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