mysql 到 mariadb:未知排序规则 utf8mb4_0900_ai_ci

Fro*_*sty 8 mariadb mysqldump phpmyadmin collation import

我有一个使用 mysqldump 导出的 mysql 8.0。我正在尝试使用 phpmyadmin 将它导入到 Mariadb 10.4 数据库中,两者都是最新版本。每次我这样做时,我都会得到:

Error: Unknown collation utf8mb4_0900_ai_ci
Run Code Online (Sandbox Code Playgroud)

然后我回到 sql 文件并替换utf8mb4_0900_ai_ciutf8mb4_general_ci,但是它说各种CREATE VIEWsql 语句都有错误。我可以尝试其他快速、无错误的修复吗?

Fra*_*rzi 22

我通过在 SQL 转储文件中utf8mb4_0900_ai_ci替换所有出现的 来解决了我的问题。utf8mb4_unicode_520_ci

  • 不要使用任何“general_ci”变体。它们排序错误并已被替换。/sf/ask/53676661/ Between-utf8-general-ci-and-utf8-unicode-ci#:~:text=utf8mb4_unicode_ci%20is%20based%20on%20the,剪切%20设计%20以%20提高%20速度。 (3认同)

tho*_*ter 20

在 MariaDB 中,请使用utf8mb4_unicode_520_ci代替,或者如果您有较新版本的 MariaDB,您甚至可以使用uca1400_as_ci 。

不要使用“_general_ci”,因为它不能根据任何版本的 Unicode 正确排序或比较,并且在几十年前已被取代

当MySQL在Unicode 9.0中引入基于比较和排序规则的utf8mb4_0900_ai_ci时,MariaDB当时选择不遵循。新规则没有太大变化,因为 Unicode 的排序和比较规则对于几代 Unicode 来说已经相当稳定。选择“unicode_520_ci”规则在几乎所有情况下都会产生相同的结果,并且此排序规则可以在 MySQL 和 MariaDB 中使用。

MariaDB 目前正在引入 Unicode 14.0 的排序规则 - 简称为uca1400_as_ci(您不再需要“utf8mb4_”部分)。如果您有新版本的 MariaDB,则可以升级到这些版本。

确保使用“utf8mb4”作为字符编码(而不是“utf8mb3”或“utf8”,它们代表旧有缺陷/已弃用的 UTF8 实现)。