日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Mysql ERROR 1067: Invalid default value for ‘auth_time‘

發布時間:2024/9/19 数据库 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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:臨時處理

  • 查詢出 sql_mode ,在其結果上去掉 NO_ZERO_IN_DATE、NO_ZERO_DATE倆選項后,得到新的 sql_mode 值。
  • 設置 sql_mode 為計算得到的新的 sql_mode 值。
  • 當前連接內有效的設置方式(只對當前連接有效,同一時間的其它連接內無效):

    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的配置文件my.cnf。
  • 在mysql的配置文件my.cnf 中修改 sql_mode 配置項。
  • sql_mode 配置項的取值為:查詢出 sql_mode ,在其結果上去掉 NO_ZERO_IN_DATE、NO_ZERO_DATE倆選項后,即為新的 sql_mode 值。
  • 如果my.cnf 文件中不存在 sql_mode 配置項,手動添加。
  • 修改完 my.cnf 文件后,重啟 mysql。
  • shell> vi /etc/my.cnf ----------------------------------------------------------------------------------------------------- [mysqld] sql_mode=STRICT_TRANS_TABLES,,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION -----------------------------------------------------------------------------------------------------

    總結

    以上是生活随笔為你收集整理的Mysql ERROR 1067: Invalid default value for ‘auth_time‘的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。