Mysql ERROR 1067: Invalid default value for ‘auth_time‘
生活随笔
收集整理的這篇文章主要介紹了
Mysql ERROR 1067: Invalid default value for ‘auth_time‘
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前言
- myslq 5.7.31
錯誤
shell> mysql -uroot -p****** mydb < /root/mydb_backup.sql mysql: [Warning] Using a password on the command line interface can be insecure. ERROR 1067 (42000) at line 2097: Invalid default value for 'auth_time'錯誤理解
auth_time 字段的默認值無效。
找到 auth_time 字段的聲明為:
真實含義為,日期字段不能設置默認值為:‘0000-00-00 00:00:00’。
錯誤原因
mysql 的 sql_mode 有如下兩個選項:
-
NO_ZERO_IN_DATE:在嚴格模式,不接受月或日部分為0的日期。如果使用IGNORE選項,我們為類似的日期插入’0000-00-00’。在非嚴格模式,可以接受該日期,但會生成警告。
-
NO_ZERO_DATE:在嚴格模式,不要將 '0000-00-00’做為合法日期。你仍然可以用IGNORE選項插入零日期。在非嚴格模式,可以接受該日期,但會生成警告
查看 sql_mode 印證一下:
mysql> select @@sql_mode; +------------------------------------------------------------------------------------------------------------------------+ | @@sql_mode | +------------------------------------------------------------------------------------------------------------------------+ | STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION | +------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec)# 下面的命令也可以查看 sql_mode mysql> select @@GLOBAL.sql_mode; mysql> select @@SESSION.sql_mode; mysql> show session variables like '%sql_mode%';解決辦法1:臨時處理
當前連接內有效的設置方式(只對當前連接有效,同一時間的其它連接內無效):
mysql> set @@sql_mode ='STRICT_TRANS_TABLES,,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'; mysql> set @@SESSION.sql_mode ='STRICT_TRANS_TABLES,,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';當前運行環境內有效的設置方式(一旦mysql重啟后,設置失效):
mysql> set @@GLOBAL.sql_mode ='STRICT_TRANS_TABLES,,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';解決辦法2:永久解決
總結
以上是生活随笔為你收集整理的Mysql ERROR 1067: Invalid default value for ‘auth_time‘的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 苹果发布 iOS / iPadOS 17
- 下一篇: Netflix 版《三体》剧集片段公布,