SQL Server - MySQL迁移错误:字符串值不正确:' \ xF4 \ x80 \ x82 \ x83 ...'

时间:2018-05-08 18:19:20

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

我是MySQL的新手,在Windows 2016 Server上将客户端的MS SQL Server 2008 R2数据库迁移到Windows 2016 Server上的x86_64(MySQL社区服务器 - GPL)上的Win64的MySql Ver 8.0.11使用MySql Workbench 8.0迁移工具,使用表数据的在线副本将数据复制到目标RDBMS选项。

我收到所有SQL Server varchar和ntext列的警告,这些列" Collat​​ion SQL_Latin1_General_CP1_CI_AS已迁移到utf8_general_ci",但这似乎只是带有两个ntext列的表的问题。该表无法使用"不正确的字符串值迁移数据:' \ xF4 \ x80 \ x82 \ x83 ...'"错误。

虽然我在字符集和排序方面有点模糊,但是我的互联网搜索表明问题是MySQL的utf8只允许3个字节,我需要在utf8mb4下移动这个数据,这允许4字节。 我改变了my.ini文件,如下所示:

[client]

default-character-set=utf8mb4

[mysql]
default-character-set=utf8mb4

[mysqld]
character-set-server=utf8mb4
character-set-client-handshake = FALSE
collation-server = utf8mb4_unicode_ci

这导致character_set_ *的以下变量值(大部分)为utf8mb4,除了character_set_system,它仍然是utf8,而character_set_filesystem是二进制的。整理变量为utf8mb4_unicode_ci: Character set and collation variables

似乎迁移工具忽略了这一点?有谁知道我如何能够完整地移动这些数据,最好是使用易于使用的迁移工具? (请记住,我在这种环境中缺乏经验意味着我需要非常明确的帮助)。谢谢!

1 个答案:

答案 0 :(得分:0)

您使用哪些迁移工具?

上次我也遇到了同样的问题,但是使用了AWS DMS。它来自表情符号字符。如果您遇到与我一样的情况,则可以使用“附加连接属性”替换源EndPoint上的表情符号字符。

示例: parallelLoadThreads = 1; ReplaceChars = F09F988A,3F,F09F9982,3F,F09F8CBB,3F,F09FA681,3F,F09F918C,3F,F09F9882E298,3F

以另一种方式,可以在保存到数据库之前删除表情符号字符。使用数据库迁移工具不友好。