网站地图    收藏   

主页 > 后端 > mysql数据库 >

MySQL 5 中的字符集问题及解决办法

来源:自学PHP网    时间:2014-09-27 10:14 作者: 阅读:

[导读] 今天打开slave日志发现一堆错误全部是这种: [ERROR] Slave: Error Character set #28 is not a compiled character set and is not specified in the /usr/local/mysql/share/mysql/charsets/Index.xml file on query. 我在master(linux)机...

  今天打开slave日志发现一堆错误全部是这种:

  [ERROR] Slave: Error 'Character set '#28' is not a compiled character set and is not specified in the '/usr/local/mysql/share/mysql/charsets/Index.xml' file' on query.

  我在master(linux)机上写insert语句,发现同步是没问题的,后来我在window上用一个mysql客户端插入数据,上面的问题就开始出现了。通过mysqlbinlog查看slave日志发现

  如果使用gbk编码的客户端插入数据就会有下面的日志:

  SET @@session.character_set_client=28,@@session.collation_connection=33,@@session.collation_server=8/*!*/;

  如果是直接在linux写insert,那么上面的28(gbk) 就变成8(latin-swde)

  原因应该是mysql客户端使用了gbk编码,而服务器无法识别。虽然你可以在'/usr/local/mysql/share/mysql/charsets/Index.xml' 找到gbk,但通过 SHOW CHARACTER SET;确实可以看出数据库没有列出gbk。

  我又比较了一下别的机器上的mysql版本,发现那些机器上的mysql都是用的发布版本,而这台slave机使用源代码安装的,于是我下了个mysql-5.0.37-linux-i686-glibc23.tar.gz

  然后

  cd /usr/local

  mv mysql mysql-old

  tar xzvf mysql-5.0.37-linux-i686-glibc23.tar.gz

  mv mysql-5.0.37-linux-i686-glibc23 mysql

  启动mysql,一切就ok了

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论