首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql 5.7时间戳默认insert null错误

问mysql 5.7时间戳默认insert null错误
EN

Stack Overflow用户
提问于 2020-07-17 05:21:37
回答 1查看 271关注 0票数 0

我有以下create table语句。

代码语言:javascript
复制
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`)
);

当我执行下面的插入操作时,我会得到错误“列'updated_at‘不能为空”

代码语言:javascript
复制
insert into test_table (id, field1, updated_at) values (1234, 'foo', null);

我原以为在这种情况下,updated_at只会采用默认值。

mysql版本5.7.12

但是,当我在mysql 5.6版中执行此操作时,insert命令可以工作。versoin从5.6到5.7有变化吗?我认为唯一的区别是5.7的NO_ZERO_DATE默认设置为true。但我以为那只是约会时间。是否需要进行配置更改?

可以通过不传入updated_at来实现此结果,但在本例中我没有使用over insert语句。

EN

回答 1

Stack Overflow用户

发布于 2020-07-17 07:38:12

我怀疑这与SQL Strict mode有关-但我在文档中找不到与您的用例匹配的确切引用。

底线是,当您为服务器提供一个显式的null值时,您不应该期望服务器使用默认值。

如果由于某种原因无法从insert列表中删除该列,一种可能的解决方法是使用default关键字,这使您的意图更加明确:

代码语言:javascript
复制
insert into test_table (id, field1, updated_at) 
values (1234, 'foo', default);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62943662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档