【问题标题】:MYSQL Workbench "Incorrect string value" error while migrating database from MS SQL-Server从 MS SQL-Server 迁移数据库时出现 MYSQL Workbench“不正确的字符串值”错误
【发布时间】:2019-10-14 23:34:38
【问题描述】:

我正在尝试将 SQL-Server 数据库迁移到 MYSQL。我收到错误

"不正确的字符串值:'\xF0\x9F\x98\x8B\xF0\x9F...'"

我正在使用 MySQL Workbench 8.0 CE 创建的批处理文件来查看错误,因为 UI 崩溃并冻结。

源表在Latin1_General_CI_AS

目标表已创建为utf8mb4_0900_ai_ci

源数据库:Mssql@DRIVER=ODBC Driver 17 for SQL Server;SERVER=localhost\SQLEXPRESS (Microsoft SQL Server)

目标数据库:Mysql@localhost:3306

还有什么我可以尝试的吗?

【问题讨论】:

  • 错误很明显。你试图运行一个相当奇怪的字符串。 SQL Server 不使用此类字符串,因为它通过nvarcharnchar 列支持Unicode (UTF16)。您可以简单地键入您想要的文本。脚本是什么样子的?那个字符串是从哪里来的?
  • 您是在询问迁移问题,但没有提供有关您如何尝试迁移数据或发生的任何转换的任何信息。此字符串可能是由于某些工具尝试将 UTF16 文本视为 ASCII,或者其他一些奇怪且不必要的转换最终使用转义序列而不是字符。
  • 至于unnecessary,SO 本身就是一个将文本保存在nvarchar 列中的ASP.NET 应用程序。这些页面使用 UTF8 编码提供。无需特殊代码即可允许任何海报发布非 US-ASCII 字符,例如 αυτό εδώ 或 ²³£§¶¤¦°±。您可以在 SQL Server 中轻松地将 Unicode 文本导出为 UTF8 文件并将其加载到 MySQL。您可以使用 SQL Server 的 SSIS 将数据直接从一个数据库移动到另一个数据库。没有理由使用转义序列

标签: mysql sql-server mysql-workbench database-migration utf8mb4


【解决方案1】:

那个十六进制不是Latin1,也不是UTF16;它匹配? 的UTF-8 编码。 (这是前 4 个字节;接下来的两个可能是另一个 Emoji 的开头。)

connection参数需要说数据是utf8mb4编码的。将表指定为 utf8mb4 是不够的。

源表不是 Latin1。或者您没有注意到 Emoji 显示为这个 Mojibake:😋

【讨论】:

    猜你喜欢
    • 2013-11-12
    • 2018-10-18
    • 2014-10-15
    • 2015-04-02
    • 2016-03-17
    • 2012-07-31
    • 1970-01-01
    • 1970-01-01
    • 2021-05-06
    相关资源
    最近更新 更多