mysql 數據庫異常解決方案
1. 數據庫導入及插入異常 [ERR] 1067 timestamp DEFAULT NULL
配置文件添加:
[mysqld]
explicit_defaults_for_timestamp = ON
2. mysql 8.0開啓遠程後無法登陸 解決方案
[root@localhost conf]# mysql -u root -p mysql
[root@localhost conf]# ALTER USER 'root'@'%' IDENTIFIED BY 'root' PASSWORD EXPIRE NEVER;
[root@localhost conf]# ALTER USER'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
[root@localhost conf]# FLUSH PRIVILEGES;
3.啓動異常 libstdc++.so.6: version `GLIBCXX_*’ not found
篇幅過長,請移步 https://blog.csdn.net/u011561335/article/details/103007928
this is incompatible with sql_mode=only_full_group_by
問題原因:高版本兼容問題,因在5.7以後group by嚴格遵守了一個什麼規範,在select中的字段必須出現在groupby中。
解決方案:添加mysql配置文件my.cnf,默認路徑在/etc/my.cnf
命令:
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
懶得去翻官方文檔,百度來的介紹如下:
STRICT_TRANS_TABLES:
在該模式下,如果一個值不能插入到一個事務表中,則中斷當前的操作,對非事務表不做任何限制
NO_ZERO_IN_DATE:
在嚴格模式,不接受月或日部分爲0的日期。如果使用IGNORE選項,我們爲類似的日期插入'0000-00-00'。在非嚴格模式,可以接受該日期,但會生成警告。
NO_ZERO_DATE:
在嚴格模式,不要將 '0000-00-00'做爲合法日期。你仍然可以用IGNORE選項插入零日期。在非嚴格模式,可以接受該日期,但會生成警告
ERROR_FOR_DIVISION_BY_ZERO:
在嚴格模式,在INSERT或UPDATE過程中,如果被零除(或MOD(X,0)),則產生錯誤(否則爲警告)。如果未給出該模式,被零除時MySQL返回NULL。如果用到INSERT IGNORE或UPDATE IGNORE中,MySQL生成被零除警告,但操作結果爲NULL
NO_AUTO_CREATE_USER:
防止GRANT自動創建新用戶,除非還指定了密碼。
NO_ENGINE_SUBSTITUTION:
如果需要的存儲引擎被禁用或未編譯,那麼拋出錯誤。不設置此值時,用默認的存儲引擎替代,並拋出一個異常