早上好, 我需要将MySQL 8.0.16数据库迁移到MySQL 5.5实例。
都运行良好,但是所有带有重音的单词(例如Giacenza-Disponibilità
)都被移植到了新数据库中,就像使用了错误的字符集(Giacenza-Disponibilit├á
)一样。
原始数据库字符集设置为:
CHARACTER SET utf8mb4
COLLATE utf8mb4_0900_ai_ci;
虽然无法将目标数据库设置为utf8mb4_0900_ai_ci
,因为我了解到该排序规则不适用于MySQL <5.6。
我尝试设置许多不同的utf8和utf8mb4字符集,例如utf8mb4_0900_ai_ci
,但是结果数据库仍然包含损坏的记录,如上例所示。如果我插入任何新记录,例如perché,它将被存储并正确显示。
有人可以建议我一种不遇到这些问题的迁移数据库的方法吗?
答案 0 :(得分:1)
已解决:我将整个数据库导出到一个.sql脚本中,并使用n ++将文件编码转换为ANSI,现在迁移可以正常进行。
答案 1 :(得分:1)
在某个地方,您正在使用以下CHARACTER SETs
其中之一:cp850,cp852,keybcs2,对吗?他们将c3a0
的UTF-8编码(十六进制à
)转换为├á
。
请参阅Trouble with UTF-8 characters; what I see is not what I stored中的“ Mojibake”,以获取可能未正确设置的内容的列表:
INSERTing
和SELECTing
文本需要指定utf8或utf8mb4时,连接。这可能是原因。CHARACTER SET utf8
(或utf8mb4
)。 (不是问题)