我是mysql新手,使用mysql workbench 8.0迁移工具将windows server 2008 r2上的客户端ms sql server 2008 r2数据库迁移到windows 2016 server上x86泷64(mysql community server-gpl)上win64的mysql ver 8.0.11,使用“将表数据在线复制到目标rdbms”选项复制数据。
我在所有SQLServervarchar和ntext列上都收到了“collationSQLLatin1u general\u cp1ci\u as migratedtoutf8u general\u ci”的警告,但这似乎只是带有两个ntext列的表的问题。该表迁移数据失败,出现“字符串值不正确:'\xf4\x80\x82\x83…'”错误。
虽然我对字符集和排序规则有点模糊,但我在互联网上的搜索表明,问题是mysql的utf8只允许3个字节,我需要将这些数据移动到utf8mb4下,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
这导致字符集的以下变量值为utf8mb4(主要是utf8mb4),字符集系统除外,它仍然是utf8,字符集文件系统是二进制的。排序规则变量是utf8mb4\u unicode\u ci:字符集和排序规则变量
迁移工具似乎忽略了这一点?有人知道我如何完整地移动这些数据,最好使用易于使用的迁移工具吗(记住,我在这种环境下的经验不足意味着我需要非常明确的帮助)。谢谢!
1条答案
按热度按时间sxpgvts31#
您使用的迁移工具是什么?
在上一次我也有同样的问题,但与aws-dms。它来自表情符号。如果你有像我一样的情况,你可以使用“额外的连接属性”来替换源端点的表情符号。
示例:parallelloadthreads=1;替换字符=f09f988a,3f,f09f9982,3f,f09f8cbb,3f,f09fa681,3f,f09f918c,3f,f09f9882e298,3f
另一种方法是,可以在保存到数据库之前删除emoji字符。它对数据库迁移工具不友好。