Invalid default value for 'start_time'
阿新 • • 發佈:2018-12-07
在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,我們修改配置檔案後就不存在這個問題了: