【问题标题】:Running into character issues while trying to migrate a PostgreSQL database to a MySQL database using MySQL Workbench尝试使用 MySQL Workbench 将 PostgreSQL 数据库迁移到 MySQL 数据库时遇到字符问题
【发布时间】:2019-03-11 19:39:12
【问题描述】:

我用作源数据库的 PostgreSQL 实例使用 UTF-8 编码和 cp1252 字符集/排序规则。我正在尝试在我的目标数据库上使用 utf8mb4/utfmb4_unicode_520_ci 字符集/排序规则。我将所有相关的服务器/客户端字符集参数设置为 utf8mb4/utfmb4_unicode_520_ci 以确保正确读取数据。尽管如此,我仍然遇到大量错误,例如:

    04:04:25 [INF][      copytable]: Statement execution failed: Incorrect string value: '\x92Angel...' for column 'user' at row 1:
    ...
    04:04:21 [INF][      copytable]: Statement execution failed: Incorrect string value: '\xE1cs' for column 'lname' at row 1:
    ...
    04:04:17 [INF][      copytable]: Statement execution failed: Incorrect string value: '\x85' for column 'user' at row 1:
    ...etc

我用于配置目标字符集/排序规则的字符串是这样的:

    preInit=SET default_storage_engine=InnoDB,character_set_connection=utf8mb4,collation_connection=utf8mb4_unicode_520_ci,collation_server=utf8mb4_unicode_520_ci,character_set_server=utf8mb4

我怎样才能摆脱这些错误,或者至少忽略它们,以免它们停止整个表格其余部分的副本?在这一点上,我什至不在乎数据是否 100% 准确,我只想让它工作。

我已经尝试了我在这里阅读的所有内容,但没有任何问题。非常感谢任何帮助。

【问题讨论】:

  • utf8mb4 应该是什么? InnoDB 是一个 MySQL 的东西。您确定您的数据库系统没有混淆吗?
  • MySQL 的“utf8”字符集实际上不是 unicode,因为它最多只支持 3 字节字符。 Utf8mb4 是他们的解决方案。 InnoDB(在目标数据库字符串中)指的是来自 PostgreSQL 数据库的数据正在迁移到的 MySQL 数据库。我很确定我没有启动任何东西,因为迁移对某些表有效(尽管,只是因为它们显然不包含任何混乱的字符)。
  • 啊,我明白了,这就是 mysql 的结束。道歉 - 我误读了您的问题,并认为您在询问 PostgreSQL。但是,错误中显示的那些代码对我来说看起来不像是有效的 UTF8。确保您将数据转储为 utf8 而不是 cp1252,如果您确定,请将其缩小到单个错误行,以便您可以转储正在使用的字符代码 + 获得正确的诊断
  • 这正是我的想法——它根本不是有效的 UTF8。在第一个错误(不正确的字符串值:'\x92Angel...')中,完整的用户名是“D'Angelo”。 \x92 是 Unicode 中的“右单引号”。如果它正确读取为 utf8mb4,那么(理论上)应该没有错误。似乎由于某种原因,MySQL 工作台正试图将 Unicode 字符之后的字符计为额外字节(可能是因为它无法单独读取 \x92?)。
  • @xn - \x92 不是有效的 utf8 编码;它可能是 cp1252 中的引用。

标签: mysql postgresql mysql-workbench mysql-error-1064 utf8mb4


【解决方案1】:

这些代码看起来像 cp1252,而不是 utf8。如果这是典型的 postgres 数据,那么您应该声明 cp1252 是源的编码(又名字符集)。

【讨论】:

    猜你喜欢
    • 2011-07-16
    • 2013-06-17
    • 2016-06-22
    • 2013-11-12
    • 2017-07-22
    • 2014-08-04
    • 2020-05-09
    • 2014-07-05
    • 2014-12-30
    相关资源
    最近更新 更多