mysql - SQL Server - MySQL 迁移错误:不正确的字符串值:'\xF4\x80\x82\x83...'
问题描述
我是 MySQL 新手,正在使用 MySql Workbench 8.0 迁移工具将 Windows Server 2008 R2 上客户端的 MS SQL Server 2008 R2 数据库迁移到 Windows 2016 Server 上 x86_64 上 Win64 的 MySql Ver 8.0.11(MySQL 社区服务器 - GPL) ,使用表数据的在线副本到目标 RDBMS 选项复制数据。
我在“Collation SQL_Latin1_General_CP1_CI_AS migrated to 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: 字符集和排序规则变量
迁移工具似乎忽略了这一点?有谁知道我怎样才能让这些数据原封不动地移动,最好是使用易于使用的迁移工具?(请记住,我在这种环境中缺乏经验意味着我需要非常明确的帮助)。谢谢!
解决方案
您使用什么迁移工具?
上次我也有同样的问题,但使用的是 AWS DMS。它来自表情符号字符。如果你有和我一样的情况,你可以使用“额外连接属性”来替换源端点的表情符号字符。
示例:parallelLoadThreads=1;ReplaceChars=F09F988A,3F,F09F9982,3F,F09F8CBB,3F,F09FA681,3F,F09F918C,3F,F09F9882E298,3F
对于另一种方式,您可以在保存到数据库之前删除表情符号字符。它对数据库迁移工具不友好。
推荐阅读
- blender - EEVEE 没有按照我想要的方式渲染我的图像,程序生成的阴影以紫色渲染
- javascript - 在异步函数中使用查询
- arrays - 将 char 数组与 KeyEvent 进行比较时获取 ArrayIndexOutOfBoundsException
- python - 尝试使用 Python 将复杂的嵌套 JSON 模式转换为 Excel 电子表格或 CSV
- discord - 这个 discord.js 事件不起作用需要适应
- r - 在保留分面变量的同时计算 ggplot2 图中的比率
- mongodb - 如何从我家连接在 aws ec2 上的容器中运行的 mongodb?
- php - 导入 CSV 文件时的每行验证
- python - Seaborn barplot:没有为 MultiIndex 定义 isna
- javascript - 通过 DM 给出多个提示