mysql5.7
運行sql腳本時報錯
1 [Err] 1067 - Invalid default value for 'UPDATE_TIME' 2 [Err] CREATE TABLE `V_TBL_AMOUNT_REASON` ( 3 `ID` int(11) NOT NULL AUTO_INCREMENT, 4 `AMOUNT_CODE` varchar(10) NOT NULL, 5 `AMOUNT_VALUE` varchar(255) NOT NULL, 6 `UPDATE_TIME` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP, 7 PRIMARY KEY (`ID`) 8 ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
這個問題和mysql中sql_mode有關系,我們可以采用兩種方法來查看它的值
方法一:
SHOW VARIABLES LIKE 'sql_mode%';
查詢得到入下信息
方法二:
SELECT @@sql_mode;
解決辦法
修改mysql配置文件(修改完重啟服務)
win下修改my.ini
sql_mode='STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' #sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
linux
在my.cnf[mysqld]下添加
sql-mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
Mac系統下:
在MacOS中默認是沒有my.cnf 文件,如果需要對MySql 進行定制,拷貝/usr/local/mysql/support-files/目錄 中任意一個.cnf 文件。筆者拷貝的是my-default.cnf,將它放到其他目錄,按照上面修改完畢之后,更名為 my.cnf,然后拷貝到/etc目錄再重啟下mysql就大功告成了。