【Mysql】mysql同步錯誤:Last_Errno: 1677
背景從庫報錯:
遇到這個錯誤比較奇怪,按錯誤的字面意思大概說是欄位型別的轉換出了錯。明膽是兩臺資料庫,一樣的表結構,怎麼會出現型別轉換問題呢。
連設定slave-skip-errors=1677都不能跳過這個錯誤:
原因:
GOOGLE搜尋了好久也說是mysql5.7版本以前存在這個BUG,建議升級mysql版本。
我試著去分析了一下錯誤原因,發現是因為之前在伺服器上加了新欄位引起的問題(修改欄位型別也可能引起該問題)。
假設我的兩臺伺服器分別是A和B,A和B做的雙主同步。
A和B中test.users結構如下:
因為在其中一臺伺服器A上的test.users上加了一個欄位,加欄位之後的表結構如下:
因為加欄位的時候表test.users還有大量資料沒有完全同步到A上來,加了欄位後還需要將之前的資料進行同步,解析了一下mysql的binlog裡面的插入sql格式如下:
INSERT INTO test.users VALUES (1, 2, 1, 99, 6);
從上面的sql明顯可以看出來,第5個欄位的值是6,原本這個6對應的是fav_times的值,表的欄位個數和第5個欄位的型別都不一樣了,所以同步會出錯。
線上錯誤的原因:從庫比主庫多了click這個欄位,原本插到另外一個datetime型別的資料 結果需要插到這個click int型,所以報錯了,應該是當時新增欄位加到從庫了
-
Replicate_Wild_Ignore_Table:
-
Last_Errno: 1677
-
Last_Error: Column 25 of table 'hd.article' cannot be converted from type 'date' to type 'int(11)'
- Skip_Counter: 0
遇到這個錯誤比較奇怪,按錯誤的字面意思大概說是欄位型別的轉換出了錯。明膽是兩臺資料庫,一樣的表結構,怎麼會出現型別轉換問題呢。
連設定slave-skip-errors=1677都不能跳過這個錯誤:
原因:
GOOGLE搜尋了好久也說是mysql5.7版本以前存在這個BUG,建議升級mysql版本。
我試著去分析了一下錯誤原因,發現是因為之前在伺服器上加了新欄位引起的問題(修改欄位型別也可能引起該問題)。
假設我的兩臺伺服器分別是A和B,A和B做的雙主同步。
A和B中test.users結構如下:
-
+--------------------+---------------------+------+-----+---------------------+----------------+
-
| Field | Type | Null | Key | Default | Extra |
-
+--------------------+---------------------+------+-----+---------------------+----------------+
-
| id | int(11) unsigned | NO | PRI | NULL | auto_increment |
-
| site_id | int(11) | NO | MUL | 0 | |
-
| source_book_id | varchar(100) | NO | MUL | 0 | |
-
| read_times | int(11) | NO | MUL | 0 | |
-
| fav_times | int(11) | NO | MUL | 0 | |
- +--------------------+---------------------+------+-----+---------------------+----------------+
-
+--------------------+---------------------+------+-----+---------------------+----------------+
-
| Field | Type | Null | Key | Default | Extra |
-
+--------------------+---------------------+------+-----+---------------------+----------------+
-
| id | int(11) unsigned | NO | PRI | NULL | auto_increment |
-
| site_id | int(11) | NO | MUL | 0 | |
-
| source_book_id | varchar(100) | NO | MUL | 0 | |
-
| read_times | int(11) | NO | MUL | 0 | |
-
| fav_times | int(11) | NO | MUL | 0 | |
- +--------------------+---------------------+------+-----+---------------------+----------------+
-
+--------------------+---------------------+------+-----+---------------------+----------------+| Field | Type | Null | Key | Default | Extra |+--------------------+---------------------+------+-----+---------------------+----------------+| id | int(11) unsigned | NO | PRI | NULL | auto_increment || site_id | int(11) | NO | MUL | 0 | || source_book_id | varchar(100) | NO | MUL | 0 | || read_times | int(11) | NO | MUL | 0 | || last_chapter_title | varchar(128) | NO | | | || fav_times | int(11) | NO | MUL | 0 | |+--------------------+---------------------+------+-----+---------------------+----------------+
INSERT INTO test.users VALUES (1, 2, 1, 99, 6);
從上面的sql明顯可以看出來,第5個欄位的值是6,原本這個6對應的是fav_times的值,表的欄位個數和第5個欄位的型別都不一樣了,所以同步會出錯。
解決方法
將新加的欄位last_chapter_title從A上先刪除掉,等表資料然全同步完之後再次加了新欄位。
線上錯誤的原因:從庫比主庫多了click這個欄位,原本插到另外一個datetime型別的資料 結果需要插到這個click int型,所以報錯了,應該是當時新增欄位加到從庫了
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29096438/viewspace-2123787/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL 跳過同步錯誤MySql
- Mysql錯誤集MySql
- MySQL2059錯誤MySql
- MySQL error 錯 誤 碼MySqlError
- MySQL 錯誤程式碼MySql
- MySQL 常見錯誤MySql
- MySQL錯誤提示(10061)MySql
- Mysql:1236常見錯誤MySql
- MySQL:錯誤程式碼:2059MySql
- mysql連線錯誤(2013)MySql
- MySQL 狂寫錯誤日誌MySql
- mysql8 常見錯誤MySql
- MySQL 安裝常見錯誤MySql
- mysql連線錯誤碼1251MySql
- Mysql自動處理同步報錯MySql
- Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock錯誤MySqlServer
- mysql的時區錯誤問題MySql
- 連線MYSQL 錯誤程式碼2003MySql
- MySQL 主從複製錯誤1837MySql
- MySQL主從複製錯誤——列型別轉換錯誤MySql型別
- 半同步複製報錯mysql8.0.25MySql
- mysql 索引長度 767 錯誤 ERROR 1071MySql索引Error
- MySQL GTID複製錯誤修復演示MySql
- laravel mysql批量提交報Access denied 錯誤LaravelMySql
- mysql報1045錯誤是什麼意思MySql
- mysql-發生系統錯誤1067MySql
- Mysql連線錯誤ERROR 2003 (HY000)MySqlError
- MySQL常見的8種SQL錯誤用法MySql
- 2、MySQL錯誤日誌(Error Log)詳解MySqlError
- mysql執行函式出現1418錯誤MySql函式
- MySQL sql_mode=only_full_group_by 錯誤MySql
- mysql慢查詢和錯誤日誌分析MySql
- MYSQL中 TYPE=MyISAM 錯誤的解決方法MySql
- DZ論壇MySQL Query Error Errno:1046錯誤MySqlError
- MySQL5.7半同步複製報錯案例分析MySql
- Mysql同步到GreenplumMySql
- mysql主從同步MySql主從同步
- mysql 啟動錯誤(InnoDB: Operating system error number 13 )MySqlError
- MySql中SUM函式計算錯誤問題MySql函式