将我的2c添加到未来谷歌员工的讨论中。
我正在研究一个类似的问题,在使用自定义时,我得到了以下错误功能接收一个varchar参数:Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation '='
使用以下查询:mysql> show variables like "collation_database";
+--------------------+-----------------+
| Variable_name | Value |
+--------------------+-----------------+
| collation_database | utf8_general_ci |
+--------------------+-----------------+
我能看出DB正在使用乌特夫8-总则,而表则使用UTF 8_Unicode_ci:mysql> show table status;
+--------------+-----------------+
| Name | Collation |
+--------------+-----------------+
| my_view | NULL |
| my_table | utf8_unicode_ci |
...
请注意,视图具有零校对。尽管此查询对一个视图显示为NULL,但视图和函数似乎具有排序规则定义。使用的排序规则是在创建视图/函数时定义的DB排序规则。
可悲的解决方案是,既更改db排序规则,又重新创建视图/函数,以强制它们使用当前排序规则。更改数据库的排序规则:ALTER DATABASE mydb DEFAULT COLLATE utf8_unicode_ci;
我希望这能帮到别人。