这段时间由于要将之前物理服务器上的数据库迁移到云主机上运行。在迁移mysql数据库使用了一段时间之后。一次进入数据库进行相关的数据库拉取发现数据库直接报错了。(以下为报错信息)
ERROR 1267 (HY000): Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='
通过上述报错应该是一个数据库里有两个字符所导致的。(抱歉:本人不是DBA)在谈论的时候不是太专业还请专业人士给予点评与指导。)
看到了上述报错,第一反应赶紧百度 google 可是悲剧的很,各种答案。很多答案只是说明了这个问题。然后给你一大堆的命令。但是关键的地方确就说说而已,没有看到实际操作命令。哎,没办法了不懂数据库看来很棘手啊。让云主机运营商的技术人员协助下吧。可是人家也么有解决好。只能自己来操作了。
以下下是我本人根据查找了各路高手的文档与说明自己整理的出来的步骤:
1.导出数据库
mysqldump -u root -proot db01 > /data/db01.sql
或者添加上
--opt --default-character-set=latin1 #例如: mysqldump -u root -proot db01 > /data/db01.sql --opt --default-character-set=latin1
2.修改数据库
vim db01.sql
%s/latin1/utf8/g
3.进入数据库新建数据库名
create database db01 default character set utf8 collate utf8_general_ci;
(在新建的时候指定下数据库的字符集。貌似网上有说新建数据库时指定新的字符集就可以了。但是我试过没有奏效。)
4.导入数据库
mysql -u root -p db01 --default-character-set=utf8 < db01.sql
(这里网上也有说过在导入的时候指定下新的字符集就可以了。但是我的还是没有奏效)
做到这里就OK了。然后我进入数据库发现没有问题了。居然解决了。