1. ERROR 1067 (42000): Invalid default value for 'lasteventtime' (對lasteventtime 類型的子段如果不設置缺省值或沒有標誌not null時候在創建表時會報這個錯誤)
這是因爲sql_mode中的NO_ZEROR_DATE導制的,在strict mode中不允許'0000-00-00 00:00:00'作爲合法日期
使用下面的命令查看sql_mode
mysql>show variables like 'sql_mode';
將上面的NO_ZERO_DATE改爲下面的 ALLOW_INVALID_DATES
mysql> set sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,ALLOW_INVALID_DATES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
上面的設置是臨時設置,在重新登陸後,該設置又恢復爲NO_ZERO_DATE
若報錯的話,你再查一下該字段改正過來沒有,只要改正了即可
這樣的話,數據庫中的某些表的字段 默認值爲“0000-00-00 00:00:00”,也可以創建數據表和添加數據了。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
若還不行,需要再進行第二步(個人判斷是因爲 只改了sql_mode,而global.sql_mode也需要改)
步驟二:先執行select @@global.sql_mode,複製查詢出來的值並將其中的NO_ZERO_DATE刪除,然後執行set global sql_mode = '修改後的值'。 此方法在當前服務中生效,重新MySQL服務後失效
修改之後若報錯,你就執行查詢,看看字段改了沒有,改了應該就可以了
親測有效!!!
另外:在mysql的安裝目錄下,打開my.ini或my.cnf文件,新增 sql_mode = ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,然後重啓mysql。 此方法永久生效