1.今天搭建的mysql5.7.23環境,發現從5.6遷移函數的時候報錯
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)
解決辦法:
set global log_bin_trust_function_creators=1;
2.Mysql5.7 GTID 開啓的情況下,從庫同步報錯跳過錯誤操作
未開啓GTID的操作如下:
mysql>stop slave ;
mysql>SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1 #跳過一個事務
mysql>start slave
開啓GTID的操作如下:
mysql>select LAST_SEEN_TRANSACTION from performance_schema.replication_applier_status_by_worker;--獲取事務號
+----------------------------------------+
| LAST_SEEN_TRANSACTION |
+----------------------------------------+
| 3925f080-d294-11e8-a4ce-00163e126c59:2 |
+----------------------------------------+
mysql>stop slave;
Query OK, 0 rows affected (0.00 sec)
mysql>set gtid_next='3925f080-d294-11e8-a4ce-00163e126c59:2';
Query OK, 0 rows affected (0.00 sec)
mysql>begin;
Query OK, 0 rows affected (0.00 sec)
mysql>commit;
Query OK, 0 rows affected (0.00 sec)
mysql>SET GTID_NEXT="AUTOMATIC";
Query OK, 0 rows affected (0.00 sec)
mysql>start slave;
Query OK, 0 rows affected, 1 warning (0.03 sec)
3.修改參數(不修改研發不同意)
explicit_defaults_for_timestamp參數修改:
因爲默認這個參數是true如果表字段類似:
`WORK_DATE` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '參加工作日期'
insert的時候送 null就會報錯,研發要求改,因爲原來5.6版本默認是false
所以修改此參數
set global explicit_defaults_for_timestamp=false;-- (記得修改my.cnf)
sql_mode修改:從'ONLY_FULL_GROUP_BY,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_ENGINE_SUBSTITUTION'
4.另外還有下問題:(mysql5.7默認sql模式問題)
1、某些GROUP BY的SQL語句無法執行了;
2、創建表時使用日期數據類型指定的默認值爲0000-00-00時報錯;
3、修改字段類型小於小於最長字段時報錯。
解決辦法參考: