我有下面的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
但在这种情况下我没有过度插入语句。
1条答案
按热度按时间6ioyuze21#
我怀疑这与sql严格模式有关,但我在文档中找不到与您的用例匹配的确切引用。
总之,在为服务器提供显式
null
价值观。如果无法从
insert
出于某种原因,一个可能的解决方法是使用default
关键字,使您的意图明确无误: