mysql信息\u架构更改排序规则是\u默认值

ioekq8ef  于 2021-06-21  发布在  Mysql
关注(0)|答案(0)|浏览(327)

在percona xtradb设置中设置utf8mb4和utf8字符集的默认排序规则时遇到问题。如果我编写这样的查询:

SET @ue = 'test@email.com';

SET @u = (SELECT u.ID FROM db.users u 
WHERE u.user_email = @ue);

它失败,并显示以下消息:

/* SQL Error (1267): Illegal mix of collations (utf8mb4_unicode_ci,IMPLICIT) and (utf8mb4_general_ci,IMPLICIT) for operation '=' */

这似乎是因为排序规则连接会话值总是设置为utf8mb4\u general\u ci。该变量的全局值是utf8\u unicode\u ci,这仍然不太正确,但更可取。
我一辈子都找不到会话变量的来源。我查看了inside information\u schema.collations,可以看到utf8\u general\u ci和utf8mb4\u general\u ci如下所示:

--------------------------------------------------------
| COLLATION_NAME     | CHARACTER_SET_NAME | IS_DEFAULT |
--------------------------------------------------------
| utf8_general_ci    | utf8               | Yes        |
--------------------------------------------------------
| utf8mb4_general_ci | utf8mb4            | Yes        |
--------------------------------------------------------

但我真的不希望这些排序规则作为默认值?
我试着把这些值放在每个节点上 my.cnf 但似乎没有任何影响:

[mysqld]
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake

非常感谢您的帮助。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题