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

Invalid default value for ‘starttime’-Howingwah

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

Invalid default value for ‘starttime’-Howingwah

结论:mysql5.7之后,默认time不能设置为0,所以导入失败。可以更改数据库结构也行,改my.ini配置都可以。

来源于:https://blog.csdn.net/czr11616/article/details/84871673