我是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列的警告,这些列" Collation 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
似乎迁移工具忽略了这一点?有谁知道我如何能够完整地移动这些数据,最好是使用易于使用的迁移工具? (请记住,我在这种环境中缺乏经验意味着我需要非常明确的帮助)。谢谢!
答案 0 :(得分:0)
您使用哪些迁移工具?
上次我也遇到了同样的问题,但是使用了AWS DMS。它来自表情符号字符。如果您遇到与我一样的情况,则可以使用“附加连接属性”替换源EndPoint上的表情符号字符。
示例: parallelLoadThreads = 1; ReplaceChars = F09F988A,3F,F09F9982,3F,F09F8CBB,3F,F09FA681,3F,F09F918C,3F,F09F9882E298,3F
以另一种方式,可以在保存到数据库之前删除表情符号字符。使用数据库迁移工具不友好。