mysql slave Incorrect string value
一台重要库的slave的sql_thread停止了。
Last_Errno: 1366
Last_Error: Error 'Incorrect
string value: '\xCE\xD2\xB6\xD4\xD5\xE2...' for column 'title' at row
1' on query. Default database: 'mail_app'. Query: 'insert into
vote_topic(id,userid,title,category) values
(21,0x746573743130407669702E736F68752E636F6D,0xCED2B6D4D5E2B8F6B9A6C4DCB5C4D0E8C7F3B3CCB6C8,11)'
这个slave可是相当关键,不能置后,看了一下出问题的表记录数很少,并且从中文内容上看起来像是还在测试,先把出问题的sql跳过再说。
日志里记录了两个表出了同步错误。都是utf8的表。
这两个表的数据在master和slave上不一致了,master要多几条。
错误是可重现的,把未同步过去的数据删除,让应用再执行同样操作,sql_thread立刻停止。
应用jdbc连接串里有characterEncoding=gbk,改成utf8就好了。问题解决了,但原因不明。master和slave为何有不同的结果,字符集的设置是一样的,表结构和表的字符集也是一样的。
又对比了relay log和bin log,内容是完全一样的,包括其中设置字符集的语句:
/*!\C gbk *//*!*/;
SET @@session.character_set_client=28,@@session.collation_connection=28,@@session.collation_server=8/*!*/;
同样的动作在master和slave上结果不同,原因不明。
mysql版本是5.1.30
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/25477/showart_2153339.html
页:
[1]