【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主從不同步報錯Last_Errno 1197MySqlAST
- mysql,出現同步停止的錯誤的處理MySql
- Mysql錯誤集MySql
- 【Mysql】Last_Errno: 1755--parallel mode errorMySqlASTParallelError
- MySQL 錯誤程式碼MySql
- MySQL 常見錯誤MySql
- MySQL error 錯 誤 碼MySqlError
- mysql 一個錯誤MySql
- mysql slave錯誤skipMySql
- mysql 啟動錯誤MySql
- MySQL錯誤之mysql.slave_master_infoMySqlAST
- 【MySQL】解決mysql的 1594 錯誤MySql
- service mysql start出錯,mysql啟動不了,解決mysql: unrecognized service錯誤MySqlZed
- MySQL2059錯誤MySql
- MySQL錯誤程式碼大全MySql
- mysql replication常見錯誤MySql
- 同步故障Last_Errno:1051AST
- MySQL 安裝常見錯誤MySql
- mysql8 常見錯誤MySql
- MySQL:錯誤程式碼:2059MySql
- MySQL 狂寫錯誤日誌MySql
- mysql主從跳過錯誤MySql
- mysql innobackupex 的一則錯誤MySql
- MySQL Replication常見錯誤整理MySql
- MYSQL— perror 錯誤碼詳情MySqlError
- mysql replication複製錯誤(zt)MySql
- mysql與php錯誤解決MySqlPHP
- mysql錯誤程式碼對照表MySql
- mysql錯誤解決總結MySql
- Mysql自動處理同步報錯MySql
- MysqL錯誤之_ERROR! MySQL server PID file could not be found!MySqlErrorServer
- 同步故障Last_Errno:1061AST
- 同步故障Last_Errno: 1091AST
- Mysql:1236常見錯誤MySql
- mysql的時區錯誤問題MySql
- MySQL錯誤提示(10061)MySql
- MySql 常見錯誤程式碼大全MySql
- MySQL ERROR 1698 (28000) 錯誤MySqlError