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

客官°小女子只卖身不卖艺 2022-05-11 05:58 284阅读 0赞

问题】在新建一个表的时候,初始化一个 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 即可:

  1. show variables like 'sql_mode';

Center

修改 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)

查看修改的结果:

  1. show variables like 'sql_mode';

Center 1

这个时候再执行建表命令,就正常了:)

发表评论

表情:
评论列表 (有 0 条评论,284人围观)

还没有评论,来说两句吧...

相关阅读