概述
在工作中,经常需要对旧机器裁撤,如果机器上有数据表则必须进行迁移。在迁移过程中,数据表编码是个很烦人的问题,最近就遇到这种问题,这里记录下解决过程,方便以后查阅。
1. 先看看新旧机器的数据库编码:
show variables like 'character%'
旧机器(latin1)
新机器(utf8)
2. 再看看要迁移的数据表的编码
ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
3. 迁移过程分析
如果直接mysqldump数据表然后放到新机器上进行source,结果会是这样的:
a. 如果直接在linux服务器上mysql连接到新机器,查看新数据表,不会出现中文乱码,一切正常
b. 如果通过代码连接到新机器,可能会出现中文乱码(取决于代码连接数据表指定的编码方式)
如果出现b这种情况,有2种解决方式:
(1). 修改代码连接数据表指定的编码方式,本例子中就是要把编码方式指定为latin1
(2). mysqldump的时候指定编码方式,本例子中应该指定为latin1,即--default-character-set=latin1,这样dump出来的sql文件就不会有中文乱码,接着把导出的sql文件的SET NAMES latin1修改为SET NAMES utf8,最后再source到新机器上(带来的新问题是在linux服务器上直接通过mysql连接到新机器看到的数据表内容会乱码,不过可以通过执行set names utf8命令解决)
最后
以上就是俭朴巨人为你收集整理的mysql数据表迁移编码问题的全部内容,希望文章能够帮你解决mysql数据表迁移编码问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复