我是靠谱客的博主 俭朴巨人,最近开发中收集的这篇文章主要介绍mysql数据表迁移编码问题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在工作中,经常需要对旧机器裁撤,如果机器上有数据表则必须进行迁移。在迁移过程中,数据表编码是个很烦人的问题,最近就遇到这种问题,这里记录下解决过程,方便以后查阅。

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数据表迁移编码问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部