【问题标题】:Mysql table collation differs from database collation on WindowsMysql 表排序规则与 Windows 上的数据库排序规则不同
【发布时间】:2021-06-22 19:21:30
【问题描述】:

我一直在 Linux 上运行 mysql,但上周我在我的 Windows 10 笔记本电脑上安装了 mysql。 我已将默认字符集和排序规则设置如下:

[mysqld]

character-set-server=utf8mb4
collation-server=utf8mb4_general_ci

这似乎有效,当我创建一个没有指定这些的数据库时,数据库的字符集和排序规则似乎是正确的。

但是,当我将任何 SQL 导入该数据库时,所有表突然都有排序规则“utf8mb4_0900_ai_ci”。 尽管这对我来说很好(因为这是一个很好的排序规则),但与我一起工作的人无法使用该排序规则。

过程
我在我的 Linux vm 上从命令行创建了一个 mysqldump。该数据库也在我的 Linux 虚拟机上运行。 当前字符集是带有排序规则“utf8_general_ci”的“utf8”。 转储文件本身似乎不包含排序信息。

然后我通过我的 Linux 命令行(连接到 10.10.10.1)将该文件导入 mysql(在我的 Windows 安装上运行)。

那么:为什么 mysql 使用该排序规则,而我另有说明?

【问题讨论】:

  • 如何进行“SQL 导入”?导入文件是否包含排序规则定义?
  • 好问题。导入文件似乎不包含排序规则定义。我现在在帖子中添加了我的流程。

标签: mysql


【解决方案1】:

utf8mb4_0900_ai_ciutf8mb4-charset 的[默认排序规则][1]。当您加载 SQL 文件但未指定排序规则时,将使用默认排序规则。通过发出命令查看变量:

mysql> show variables like '%collation%';

您可以更改default_collation_for_utf8mb4 变量的值或使用:

SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci

定义连接的排序规则。

【讨论】:

  • 我认为你是对的(我会在它工作后立即接受它作为答案)。但是将default_collation_for_utf8mb4=utf8mb4_general_ci 放入my.ini 将不再让我启动mysql。那么如何全局设置这个变量呢?我找到了dev.mysql.com/doc/refman/8.0/en/…,但我不清楚该怎么做。
【解决方案2】:

您可以在命令工具中设置变量,但由于某种原因不在 my.ini 中(这是一个错误):

mysql> SET default_collation_for_utf8mb4=utf8mb4_general_ci;

并使用此命令检查是否正常:

mysql> show variables like '%collation%';

+-------------------------------+--------------------+
| Variable_name                 | Value              |
+-------------------------------+--------------------+
| collation_connection          | utf8mb4_unicode_ci |
| collation_database            | utf8mb4_general_ci |
| collation_server              | utf8mb4_general_ci |
| default_collation_for_utf8mb4 | utf8mb4_general_ci |
+-------------------------------+--------------------+

另外,为了确定: I go to phpmyadmin, select each database, click on operations and check both checkmarks at collation.

我认为这是 phpmyadmin 5 中的新功能。

【讨论】:

    猜你喜欢
    • 2023-04-11
    • 2018-12-19
    • 1970-01-01
    • 2011-11-14
    • 1970-01-01
    • 2011-05-11
    • 2019-03-07
    • 2012-01-19
    • 1970-01-01
    相关资源
    最近更新 更多