0

我在 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 '=' */

这似乎是因为collat ​​ion_connection会话值始终设置为 utf8mb4_general_ci。该变量的全局值是utf8_unicode_ci,这仍然不太正确,但更可取。

我终生无法找到该会话变量的来源。我查看了information_schema.COLLATIONS内部,可以看到utf8_general_ciutf8mb4_general_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

非常感谢任何帮助。

4

0 回答 0