关于 MySQL5.7.log 版本导出 SQL 语句再导入 8.0.13 版本出现 Incorrect datetime value: ‘0000-00-00 00:00:00‘ 错误的解决办法
環境配置
導出數據庫版本:5.7.12.log
導入數據庫版本:8.0.13
問題: 導出 SQL 腳本,再在高版本數據庫中導入時,出現 Incorrect datetime value: ‘0000-00-00 00:00:00’ for column ‘create_time’
原因:官方文檔上說明MySQL允許將’0000-00-00’保存為“偽日期”(如果不使用NO_ZERO_DATE SQL模式),就會報錯
解決:
修改全局
set @@global.sql_mode = ‘STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION’;
修改當前
set @@sql_mode = ‘STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION’;
也可以更改my.ini配置文件
[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION
然后重啟數據庫即可
備注:因為本次導入的 SQL 還包含創建EVENT,存儲過程,在解決了上述問題之后,還出現如下錯誤:
ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)原因:
這是我們開啟了bin-log, 我們就必須指定我們的函數是否是
1 DETERMINISTIC 不確定的
2 NO SQL 沒有SQl語句,當然也不會修改數據
3 READS SQL DATA 只是讀取數據,當然也不會修改數據
4 MODIFIES SQL DATA 要修改數據
5 CONTAINS SQL 包含了SQL語句
其中在function里面,只有 DETERMINISTIC, NO SQL 和 READS SQL DATA 被支持。如果我們開啟了 bin-log, 我們就必須為我們的function指定一個參數。
解決辦法
在 my.ini 配置文件中 [mysql] 節點下增加:
log_bin_trust_function_creators=1 即可以
總結
以上是生活随笔為你收集整理的关于 MySQL5.7.log 版本导出 SQL 语句再导入 8.0.13 版本出现 Incorrect datetime value: ‘0000-00-00 00:00:00‘ 错误的解决办法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ubuntu 安装 Docker 容器
- 下一篇: 搭建认证服务器 - Spring Sec