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';

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

猜你喜欢

转载自blog.csdn.net/plpldog/article/details/82788737
今日推荐