mysql5.6修改字符编码,ERR:Illegal mix of collations for operation 'concat'

mysql5.6修改字符编码,ERR:Illegal mix of collations for operation ‘concat‘

1.问题起因:搭建环境初始化mysql的时候看到mysql配置文件[cloent]下有设置编码为default-character-set = utf8,大意误以为是全局配置了,其实还需要在[mysqld]下添加character_set_server = utf8参数的

2.尝试在线处理:

  mysql> show variables like ‘collation_%‘;

  mysql> show variables like ‘character_set_%‘;

  看到编码为:latin1

  便尝试使用set命令修改:set GLOBAL Variable_name=utf8_general_ci;     set GLOBAL Variable_name=utf8; 

  结果在执行存储过程中:call xx_ya_stats_xx_daily(2018-05-18,3); 仍然报错:Illegal mix of collations for operation ‘concat‘

  最后再查看数据库的编码,自动恢复为latin1

3.个人结论:mysql在初始化时使用latin1字符编码,导致了里面的库表数据都是latin1字符编码,虽然改了全局的编码,但库表数据编码还是没有改到,导致失败。

4.最终解决办法:把数据库备份导出,重新初始化mysql实例,再导入数据,恢复正常。

5.步骤:

  导出:mysqldump -uroot -h‘127.0.0.1‘ -P3306 -pxxx-E -R  db_name > db_name.sql

  修改sql:cat db_name.sql | grep -v "ALTER DATABASE \`db_name\` CHARACTER SET latin1 COLLATE latin1_swedish_ci ;" > db_name_new.sql

  初始化同样的新实例:mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=xxxxx

  设置密码:mysql> grant all privileges on *.* to ‘root‘@‘%‘ IDENTIFIED BY ‘xxxx‘;

       mysql> flush privileges;

  修改密码:mysqladmin -h127.0.0.1 -uroot -p --port=3336 password "new_passwd"

  开启事件:SET GLOBAL event_scheduler = ON;
  查看事件是否开启:mysql> show variables like ‘event_scheduler‘;

  创建数据库并指定字符编码:mysql> CREATE database db_name DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

  导入数据库:mysql -uroot -h‘127.0.0.1‘ -P3306 -pxxxx db_name < db_name_new.sql

  测试:call xx_ya_stats_xxxx_daily(2018-05-18,3);

  查看编码:

    mysql> show variables like ‘collation_%‘;

    mysql> show variables like ‘character_set_%‘;

mysql5.6修改字符编码,ERR:Illegal mix of collations for operation 'concat'

原文地址:https://www.cnblogs.com/chenjw-note/p/9066654.html

时间: 2024-10-09 18:51:39

mysql5.6修改字符编码,ERR:Illegal mix of collations for operation 'concat'的相关文章

MySQL Error: Illegal mix of collations for operation &#39;concat&#39;

在使用concat连接字符串时出现错误:MySQL Error: Illegal mix of collations for operation 'concat' 原因:字段操作默认为UTF8的编码,应该绝对统一使用UTF-8,而创建数据库时使用了其它编码.  解决方法:在Navicat for MySQL中删除掉原来的数据库,重新新建,新建时设置字符集和排序规则为UTF-8 MySQL Error: Illegal mix of collations for operation 'concat

Illegal mix of collations for operation &#39;concat&#39;

在t_employee表中,练习使用concat函数连接字符串时, mysql> select concat('工号为:',fnumber,'的员工的幸福指数:',fsalary/(fage-21)) -> from t_employee;1271 - Illegal mix of collations for operation 'concat'   报错 在网上查看了相关错误文章发现是字段得字符集有问题,我这里的fnumber字段的字符集是latin1,而字段操作默认为UTF8的编码. 绝

MySQL SQL error: #1271 - Illegal mix of collations for operation &#39;UNION&#39;

MySQL在使用UNION查询时或者创建视图时报:异常:SQL error: #1271 - Illegal mix of collations for operation 'UNION',此类问题是由于UNION Mysql的Table的时候对应的字段Collation字符序不同导致的,如下图所示: 创建视图或者查询时采用UNION ALL报异常 通过WorkBench查看相关查询的表的详细信息发现字符类型的字段的Collation不同 通过修改字段的Collation解决此类错误,或者创建字

MySQL 报错:MySQL Illegal mix of collations for operation &#39;like&#39;

MySQL Illegal mix of collations for operation 'like' 在 MySQL 5.5 以上, 若字段类型 Type 是 time,date,datetime 在 select时如果使用 like '%中文%' 会出现 Illegal mix of collations for operation 'like'在编程时要对每个字段进行查找, 在执行时可能就会出现时间字段 like '%中文%' 这种语法,在旧版的 MySQL 是不会出现错误的. 升到 M

错误之Illegal mix of collations for operation &#39;like&#39;

内容来自博客:https://www.cnblogs.com/install/p/4417527.html MySQL Illegal mix of collations for operation 'like'在 MySQL 5.5 以上, 若字段类型 Type 是 time,date,datetime 在 select时如果使用 like '%中文%' 会出现 Illegal mix of collations for operation 'like'在编程时要对每个字段进行查找,在执行时可

Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLIC

在mysql5中遇到的问题: Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLICIT) for operation '=' 碰到个字符集问题. ---------------------------------- 当前,utf8_unicode_ci校对规则仅部分支持Unicode校对规则算法.一些字符还是不能支持.并且,不能完全支持组合的记号.这主要影响越南和俄罗斯的一些少数民族语言,

oracle修改字符编码

ALTER DATABASE character set INTERNAL_USE ZHS16GBK;  ALTER DATABASE CHARACTER SET ZHS16GBK;  oracle修改字符编码    1 1    打开命令窗口    2 2    查看当前字符编码    3 3    执行命令    4 oracle修改字符编码 打开命令窗口 sqlplus shybt/[email protected]:1521/orcl 查看当前字符编码 select userenv('l

centos中文乱码修改字符编码使用centos支持中文

如何你的centos显示中文乱码,只要修改字符编码使centos支持中文就可以了,没有这个文件可以创建它,下面是修改步骤 一.中文支持 安装中文语言包: 复制代码 代码如下: yum groupinstall chinese-support 修改字符编码配置,没有这个文件就创建它: 复制代码 代码如下: vim /etc/sysconfig/i18n 修改后内容如下: 复制代码 代码如下: LANG="zh_CN.GB18030″SUPPORTED="zh_CN.UTF-8:zh_CN

mysql命令行修改字符编码

1.修改数据库字符编码 mysql> alter database mydb character set utf8 ; 2.创建数据库时,指定数据库的字符编码 mysql> create database mydb character set utf8 ; 3.查看mysql数据库的字符编码 mysql> show variables like 'character%'; //查询当前mysql数据库的所有属性的字符编码 +--------------------------+-----