我是在windows上装的mysql,有两台机器,做了主从复制。
在master上依次执行:
create database  test character set utf8;
use test;
create table message (msg_id int primary key,content varchar(200),type int,creator_id int,create_time datetime) default charset=utf8;
然后从拷了个造数据的存储过程:
CREATE  PROCEDURE `message_insert_procedure`(loop_times INT)
BEGIN
DECLARE var INT DEFAULT 0;    
    WHILE var<loop_times DO    
    SET var=var+1;    
    INSERT INTO test.message (msg_id,content,type,creator_id,create_time)   
    VALUES (var,CONCAT(var,' - ','中文'),0,0,now());    
    END WHILE;  
END.
执行完以上语句后,slave上也建好了数据库、表、和存储过程。
在master上执行call test.message_insert_procedure(1000);
master的表中有1000条数据,slave中没数据。
在slave上执行 show slave status;
报错:Illegal mix of collations (latin1_swedish_ci,IMPLICIT), (utf8_general_ci,COERCIBLE), (utf8_general_ci,COERCIBLE) for operation 'concat'' on query。

解决方案 »

  1.   

    主从机器上执行select * FROM information_schema.tables where TABLE_COLLATION like 'latin1%';都为空。
    另外主从机器上也都是下面这样的:而且在slave上执行call test.message_insert_procedure(1000);也是有1000条数据的。
    就是复制的时候会报上面的错。
      

  2.   

    字符集设置的问题,参考下贴中存储过程的方法。   http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
    MySQL 中文显示乱码