Invalid default value for 'start_time'

版权声明:转载注明出处 https://blog.csdn.net/czr11616/article/details/84871673

在mysql-5.7中,建表语句如下:

CREATE TABLE seckilltemp2(
`stock_id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '商品库存id',
`name` VARCHAR(120) NOT NULL COMMENT '商品名称',
`number` INT NOT NULL COMMENT '库存数量',
`create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '秒杀创建时间',
`start_time` TIMESTAMP NOT NULL DEFAULT 0 COMMENT '秒杀开启时间',
`end_time` TIMESTAMP NOT NULL DEFAULT 0 COMMENT '秒杀结束时间',
PRIMARY KEY (stock_id),
KEY idx_start_time(start_time),
KEY idx_end_time(end_time),
key idx_create_time(create_time)
)ENGINE=INNODB AUTO_INCREMENT=1000 DEFAULT CHARSET=utf8 COMMENT '秒杀库存表'

会出现 Invalid default value for 'start_time'的报错信息,原因是mysql-5.7中不能给日期设置0值

我们需要修改mysql配置文件,在mysql安装目录下找到my.ini文件,添加如下配置,之后重启mysql:

sql_mode=STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION

另外再说一句: 

在我们修改配置文件之前,我们在命令行中输入查询命令:

SELECT @@SQL_MODE

会得到如下结果:

 

可以明显看到NO_ZERO_IN_DATE和NO_ZERO_DATE,说明日期不能为0,我们修改配置文件后就不存在这个问题了:

猜你喜欢

转载自blog.csdn.net/czr11616/article/details/84871673
今日推荐