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命令解决)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值