ERROR 1067 (42000): Invalid default value for 'lasteventtime' (數據庫 默認值不能爲 “0000-00-00 00:00:00”)

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。 此方法永久生效

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章