从MySQL 8.0.16迁移到MySQL 5.5-重音和特殊字符错误

时间:2019-09-18 08:02:18

标签: mysql utf-8 database-migration mysql-8.0 mysql-5.5

早上好, 我需要将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é,它将被存储并正确显示。

有人可以建议我一种不遇到这些问题的迁移数据库的方法吗?

2 个答案:

答案 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”,以获取可能未正确设置的内容的列表:

  • 要存储的字节需要UTF-8编码。 (这似乎不是问题。)
  • INSERTingSELECTing文本需要指定utf8或utf8mb4时,连接。这可能是原因。
  • 该列需要声明为CHARACTER SET utf8(或utf8mb4)。 (不是问题)
  • HTML应该以。
  • 开头