MySQL5.7时间戳默认插入空错误

3z6pesqy  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(250)

我有下面的create table语句。

CREATE TABLE `test_table` ( 
`id` INT(11) NOT NULL,
`field1` varchar(10),
`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
);

当我做下面的插入时,我会得到错误“column'updated\u at'cannot be null”

insert into test_table (id, field1, updated_at) values (1234, 'foo', null);

我预料到了 updated_at 在这种情况下只会采用默认值。
mysql版本5.7.12
但是,当我在MySQL5.6版本中执行此操作时,insert命令可以工作。从5.6到5.7有变化吗?我认为唯一的区别是5.7没有默认为true的零日期。但我以为那只是约会时间。是否需要更改配置?
不通过传递就有可能达到目的 updated_at 但在这种情况下我没有过度插入语句。

6ioyuze2

6ioyuze21#

我怀疑这与sql严格模式有关,但我在文档中找不到与您的用例匹配的确切引用。
总之,在为服务器提供显式 null 价值观。
如果无法从 insert 出于某种原因,一个可能的解决方法是使用 default 关键字,使您的意图明确无误:

insert into test_table (id, field1, updated_at) 
values (1234, 'foo', default);

相关问题