mysql: Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation '= 的解决

昨天把mysql里所有table的varchar字段的字符集,批量换成了utf8mb4/utf8mb4_unicode_ci ,以便能保存一些emoji火星文 , 结果有一个sql语句执行时,报错如下:

Illegalmixofcollations(utf8_unicode_ci,IMPLICIT)and(utf8_general_ci,IMPLICIT)foroperation ‘=

观察了一下,这个sql使用了一个自定义的function,这个函数的入口参数为varchar,类似如下:

CREATE FUNCTION `f_xxx`(
  p_ref_type     VARCHAR(50) ,
  ...
)

问题就在这里,把p_ref_type的参数类型改成:

CREATE FUNCTION `f_xxx`(
  p_ref_type     VARCHAR(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
  ...
)

就ok了。

mysql: Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation '= 的解决

时间: 2024-10-11 15:52:14

mysql: Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation '= 的解决的相关文章

mysql : Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf16_general_ci,IMPLICIT) for operation '

mysql多表关联查询报错Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf16_general_ci,IMPLICIT) for operation ' 查了这两张表都是utf-8格式的,为什么还是不能查询,后来发现字段里的排序规则有一张表是utf-16的, 修改后即可查询 mysql : Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf16_gen

MySQL 报错:MySQL Illegal mix of collations for operation 'like'

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 (latin1_swedish_ci,COERCIBLE) and (gbk_chinese_ci,COERCIBLE) for operation '=' 错误

背景: 写一个数据DB操作时,日志报Illegal mix of collations (latin1_swedish_ci,COERCIBLE) and (gbk_chinese_ci,COERCIBLE) for operation '=' 错误: 原因: 1.插入式代码中的数据类型为GBK: 2.DB建表时忘记修改默认的编码格式(默认为 Collation: latin1_swedish_ci 格式): 1.2结合之后,插入数据编码错误: 定位方法: 1.查看DB表的字段编码 show f

mysql 存储过程中报Illegal mix of collations

我写了一个存储过程,里边有一个游标,然后遍历游标,根据遍历的结果update 另外一张表的值,这是大体情况: 问题是在update的时候报:Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT)错误. 表和字段的collate都是utf8_unicode_ci,但是server的是utf8_general_ci,还不能改! 没办法只能在存储过程中转换! 解决方法:将比较等式一边进行字符

错误之Illegal mix of collations for operation 'like'

内容来自博客: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'在编程时要对每个字段进行查找,在执行时可

c#程序连接mysql,报"Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLICIT) for operation '='"的解决方案

=============================================== 20170607_第一次修改                       ccb_warlock =============================================== 工作关系开发一个连接mysql的c#程序,交付测试后反应在连测试环境的数据库后出现报错且数据无法获取的情况.(如下图所示) 查到了http://www.cnblogs.com/xiaochaohuashengm

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校对规则算法.一些字符还是不能支持.并且,不能完全支持组合的记号.这主要影响越南和俄罗斯的一些少数民族语言,

mysql字符集问题 错误代码: 1267 Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_croatian_ci,IMPLICIT) for operation '='

一般是多表或跨库表查询导致出现的问题,其原因是两张表的字符集不一样导致的,那为什么两张表的字符集会不一样?这是由于架构师或者开发人员在建表的时候不小心选错字符集的原因导致的. 那好我们把两张表(或两个库的关联的两张表)的字符集更改为一样就可以了,是的我们改过来发,发现变态的MYSQL还是一样的错误!!! 我在网上查了一些资料说的感觉很全,但太理论化且不实用(就是解决不了问题). 根据上面的分析我们想两张表的字符集改为一样为目的肯定是可以的,然后我在想是不是字段也存在字符集的概念,但是可恶的是工具

mysql 字符集错误 Illegal mix of collations

SELECT * FROM     mobile_card.mcc_o2o_repayment_request orr         INNER JOIN     bi_o2o_sfq.CARD C ON C.CARDID = orr.cardno LIMIT 0, 50 Error Code: 1267. Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLICIT) for operat