繁体   English   中英

如何让 mysqldump 以正确的编码和排序规则导出数据库?

[英]How to get mysqldump to export a database in the right encoding and collation?

使用mysqldump转储数据库时,我遇到了编码问题。

问题是正在生成的文件破坏了非 ASCII 字符(例如德语和西班牙语字符)。 数据库中的数据是正确的,但导出错误。

我尝试了以下方法:

  1. 使用--default-character-set为 utf8、utf8mb4 和 latin1(最后一个选项,因为虽然表使用 utf8_general_ci 排序规则,但数据库本身设置为 latin1,我不知道为什么)。 奇怪的是,输出的文件大小不同,但内容(特别是有问题的字符)在所有三种情况下都显示相同的问题。 好像该选项将被忽略。
  2. 将转储的文件导入新的mysql服务,但由于文件中的字符被破坏,导入也被破坏。 例如。 带有 utf8mb4 选项的转储被导入到具有字符编码 utf8mb4 的新数据库中,但由于源文件编码错误,它没有被“转码回”为正确的形式。
  3. 最初我认为这可能是mysql服务器版本不同的问题(源服务器为5.7,目标服务器为8.0),但由于文件似乎已经损坏,我现在认为这可能不是根本原因。 仍然迷路,所以我更愿意提及它以防万一它有帮助。

我正在运行的句子示例:

mysqldump --default-character-set=utf8mb4 --no-tablespaces -u database_user -p database_name > /home/username/database_name-utf8mb4-20220712.sql

在导出过程中和在新服务器中导入过程中都不会出现错误。 一切似乎都很顺利,但是字符编码搞砸了,所以有些事情不妙。

非常感谢任何支持。 谢谢!

但是字符编码搞砸了

给我们一个例子。 包括文件中出现垃圾的一小部分的十六进制转储。

原始数据可能是字符集 utf8 或 latin1,但转储和/或重新加载指定了错误的字符集。 请提供转储和加载的更多详细信息。

另请参阅: UTF-8 字符问题; 我看到的不是我存储的

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM