在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,我们修改配置文件后就不存在这个问题了:
结论:mysql5.7之后,默认time不能设置为0,所以导入失败。可以更改数据库结构也行,改my.ini配置都可以。
来源于:https://blog.csdn.net/czr11616/article/details/84871673
最新评论