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