【发布时间】:2018-10-18 18:42:23
【问题描述】:
我是 MySQL 新手,我正在使用 MySql Workbench 将 Windows Server 2008 R2 上客户端的 MS SQL Server 2008 R2 数据库迁移到 Windows 2016 Server 上 x86_64 上 Win64 的 MySql Ver 8.0.11(MySQL 社区服务器 - GPL) 8.0 迁移工具,使用 Online copy of table data to target RDBMS 选项复制数据。
我收到关于“Collation SQL_Latin1_General_CP1_CI_AS 已迁移到 utf8_general_ci”的所有 SQL Server varchar 和 ntext 列的警告,但这似乎只是具有两个 ntext 列的表的问题。该表无法迁移数据,出现“不正确的字符串值:'\xF4\x80\x82\x83...'”错误。
虽然我对字符集和排序规则有点模糊,但我在互联网上的搜索表明问题在于 MySQL 的 utf8 只允许 3 个字节,我需要将这些数据移动到允许 4 个字节的 utf8mb4 下。 我像这样更改了 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
迁移工具似乎忽略了这一点?有谁知道我怎样才能让这些数据完好无损地移动,最好是使用易于使用的迁移工具? (请记住,我在这种环境中缺乏经验意味着我需要非常明确的帮助)。谢谢!
【问题讨论】:
标签: mysql sql-server database mysql-workbench database-migration