Quantcast
Channel: Planet MySQL
Viewing all articles
Browse latest Browse all 1081

Last_SQL_Errno: 1677 にであった

$
0
0
珍しいエラーでSQLスレッドが止まっていた。

mysql> SHOW SLAVE STATUS\G
..

               Last_SQL_Errno: 1677
               Last_SQL_Error: Column 0 of table 'd1.t1' cannot be converted from type 'int' to type 'bigint(20)'
..

なにこれ。初めて見た。
mysqlbinlogで止まっているリレーログのエントリを当たると、ROWフォーマットで記録されたUPDATEステートメントに遭遇。
binlog_format = MIXEDなので、ORDER BYなしのLIMIT使ったUPDATEでも投げたのかな。。


で、まあ、非決定性のクエリ投げるなよは置いておいて。
INT型をBIGINT型に変換できないとか言ってるけど、なんだよ変換って。。

原因はマスターとスレーブのテーブルで、データ型が違うカラムがあったからorz
STATEMENTベースのレプリケーションだと問題にならないけど、
ROWベースのレプリケーションだとこのエラーに遭遇する。

ちなみに、マスター側テーブルのカラムをVARCHAR(100)、
スレーブ側をVARCHAR(50)にしてもこのエラーにぶち当たった。

ただ、エラーメッセージにtype 'varchar(300) to type 'varchar(50)'って書いてあったんだけど、
UTF-8だから1文字3byteで、バイナリログにはバイト数で情報書いてるんだろうなとか思うだけ思って調べなかった。


教訓: バッチ用スレーブだからって無茶はいけない。

PlanetMySQL Voting: Vote UP / Vote DOWN

Viewing all articles
Browse latest Browse all 1081

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>