MySQL:ERROR_1067
Temperature: 0 °C
最近安裝了Ubuntu Server 18.04系統。
接著安裝了MySQL 5.7.21的版本。
在時間的預設值上發生了ERROR 1067 的錯誤警告。
原因是因為MySQL 5.7.21的版本默認的預設值是不允許時間欄位為0000-00-00 00:00:00。
如下:
mysql> show variables like 'sql_mode';
當執行上述指令時得到的結果如下
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,
ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
上頭顯示了NO_ZERO_IN_DATE,NO_ZERO_DATE的部分就是時間欄位預設不能為0。
解決方式,需要修改全局變量sql_mode,去掉NO_ZERO_IN_DATE,NO_ZERO_DATE。
如下:
mysql> set global sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
但是上列方式只適用於當前的生效,意思就是說若是重新啟動Mysql服務就會失效。
若要永久生效則必須在Mysql的安裝目錄底下my.cnf裡新增以下參數
[mysqld]sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
之後重啟Mysql。
以上紀錄