我在MySQL版本8上有一个模式,我应该将它迁移到一个MariaDB版本10.3。(与Mysqldump)
模式有Charset = utf8mb4和collation = utf8mb4_0900_ai_ci
MariaDB服务器具有默认的Charset = utf8和collation = utf8_general_ci
当我试图导入转储时,由于错误,它是不可能的:
Unknown collation: utf8mb4_0900_ai_ci我从这里找到了一个解决方案:https://stackoverflow.com/questions/42385099/1273-unknown-collation-utf8mb4-unicode-520-ci
而且起作用了。但我想知道:
首先:这些差异是否会导致dmp数据导入后的数据丢失?
第二:这些差异会导致我的新服务器上的输出或排序有什么不同吗?
发布于 2022-10-27 16:49:57
首先,我不建议追溯到20年前的Charset = utf8和collation = utf8_general_ci
utf8将失去所有的Emoji和一些汉字。另外,很多东西会有不同的比较。
相反,去MariaDB中的“最佳可用的”.
你确实有问题,但你问题的标题不是正确的问题。
Unknown collation: utf8mb4_0900_ai_ci这是因为MySQL实现了一些MariaDB尚未实现的COLLATIONs。
两个数据库都处理字符集utf8mb4。因此,编码不是问题。
校对可能是一个小问题,也可能是一个大问题。
utf8mb4_unicode_520。它与utf8mb4_0900_ai_ci不完全相同,但很接近。PRIMARY KEY或UNIQUE键产生问题。它可能会显示为“重复键”。你的问题--
数据丢失--不(假设为utf8mb4),除非您获得一个dup键,这将导致插入一行失败。
输出上的差异
我的图表没有显示520和0900之间的排序规则差异,但是图表只覆盖了UTF-8字符的一小部分。(与utf8_general_ci有许多不同之处。)
发布于 2022-10-27 13:42:22
这些差异会导致dmp数据导入后的数据丢失吗?
不是的。MariaDB 10.3支持UTF8MB4。
这些差异会导致我的新服务器上的输出或排序有什么不同吗?
是。比较和排序是根据排序进行的。因此,比较可能产生另一个结果,因此,另一个输出,排序可能产生另一个行排序。
https://dba.stackexchange.com/questions/318824
复制相似问题