200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > mysql中Invalid default value for 'stime'问题

mysql中Invalid default value for 'stime'问题

时间:2020-09-25 18:53:42

相关推荐

mysql中Invalid default value for 'stime'问题

独角兽企业重金招聘Python工程师标准>>>

今天写数据库脚本,创建数据库时,有一个字段是datetime类型的,想要设置默认时间为当前时间,于是有了如下代码

`registerDate` datetime NOT NULL DEFAULT NOW() COMMENT '注册时间'

执行之后报错Error Code: 1067. Invalid default value for 'registerDate'

PS:在mysql 5.6中,这种写法OK,之前的版本不支持这样的写法。

当然mysql一般在设置时间的时候也常用时间戳。timestamp类型

再增一案例

在执行mysql数据库时报错

CREATE TABLE `advert_schedule_time` (`advert_id` int(11) NOT NULL DEFAULT '0' COMMENT '广告id',`stime` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '开始时间',`etime` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '结束时间',`times` int(11) NOT NULL DEFAULT '0' COMMENT '投放次数',UNIQUE KEY `adverttime` (`advert_id`,`stime`,`etime`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT '广告时间排期表';

首先用下面的命令看下sql_mode

show variables like 'sql_mode';

如果查询的结果如下:

ONLY_FULL_GROUP_BY, STRICT_TRANS_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION

如果结果中含有NO_ZERO_IN_DATE,NO_ZERO_DATE则执行下面的命令:

set session sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。