1. 程式人生 > >Invalid default value for 'start_time'

Invalid default value for 'start_time'

在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,我們修改配置檔案後就不存在這個問題了: