用mysqlbinlog恢復出來的SQL檔案中的插入陳述句無法執行,報如下錯誤:
恢復命令:/usr/local/mysql/5.7.17/bin/mysql -uXXXX-p </tmp/re2.sql
源sql腳本檔案中的部分陳述句:insert into excessorder(userid,citycode,cmtokenid,filename) values('15850
990906',13,'JSHDC-ASPIRE-fabf9e6c-ee16-4914-a810-fe048242b40e','moh00420y')
報錯如下:
ERROR 1062 (23000) at line 84: Duplicate entry '987437' for key 'PRIMARY'
修改源sql腳本后:insert ignore into excessorder(userid,citycode,cmtokenid,filename) values('15850
990906',13,'JSHDC-ASPIRE-fabf9e6c-ee16-4914-a810-fe048242b40e','moh00420y')
報錯如下:
ERROR 1766 (HY000) at line 5883: The system variable explicit_defaults_for_timestamp cannot be set when there is an ongoing transaction.
修改源sql腳本檔案如下:注釋掉這個引數 SET @@session.explicit_defaults_for_timestamp=0/*!*/;
#SET @@session.explicit_defaults_for_timestamp=0/*!*/;
問題1:不知道,這個explicit_defaults_for_timestamp注釋掉會有何影響?
問題2:之前binlog恢復的插入陳述句有沒有正確,修改成insert ignore into后有沒有更好的方法。
uj5u.com熱心網友回復:
1.這個引數是控制timestamp型別欄位在更新所在資料行時是否自動更新為當前時間。2.你的insert陳述句報錯是因為主鍵沖突了,首先要做的是,檢查你binlog決議出來的資料是不是有跟當前資料重復的地方,而不是直接ignore。
uj5u.com熱心網友回復:
像這個問題,直接登錄mysql后,source 居然不報錯了。。怪事。轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/49932.html
標籤:MySQL
