我收到了从 Sql Server 到 MySql db 运行数据传输组件的服务器错误。错误信息如下:
[MySql][ODBC 5.1 Driver][mysqld-5.0.67-community-nt-log]Server does not support 4-byte encoded UTF8 characters.
源 Sql Server 表包含 nvarchar 列,目标 MySql 表包含 varchar 列。
任何人都可以阐明这个问题吗?
我收到了从 Sql Server 到 MySql db 运行数据传输组件的服务器错误。错误信息如下:
[MySql][ODBC 5.1 Driver][mysqld-5.0.67-community-nt-log]Server does not support 4-byte encoded UTF8 characters.
源 Sql Server 表包含 nvarchar 列,目标 MySql 表包含 varchar 列。
任何人都可以阐明这个问题吗?
如果您需要 MySQL 支持 4 字节 UTF-8 字符(通常被认为是 UTF-8 的一部分),您需要使用字符集 utf8mb4,而不是 utf8。MySQL 5.5.3 首次支持 utf8mb4。
我有同样的问题,我可以通过简单地将char(1)
SQL 2008 上的链接服务器上的单行的列更新到 MySQL 5.1 DB 来重现:
update linked_server_name...table_name set status = 'c' where id = 1;
此错误发生在新建的服务器上。我在另一台机器上进行了类似的设置,相同的代码工作得很好。唯一不同的是 MySQL ODBC 驱动程序的版本:在新服务器上,它是 5.2.2;在旧(工作)服务器上,它是 5.1.8(现在不受支持)。
我下载并安装了以前版本的 ODBC 驱动程序(v5.1.11),问题就消失了。
“4 字节编码的 UTF-8 字符”是指带有代码点的字符> 0xFFFF
,即代码点不适合 16 位的字符(在基本多语言平面(BMP) 之外)。许多旧系统不支持 BMP 之外的字符。
BMP 以外的字符通常是 CJK 字符;不知道你这里是不是这样。:-)
将您的 MySQL 更新到 5.5.3 并使用 utf8mb4 进行列编码。
强制复制
在 SQLServer 中创建一个与您需要复制的表具有相同结构的新表
更改新表的列 nvarchar(size) -> varchar(size x 2)
将数据复制到新表中
将 SQLServer 的数据从新表复制到 MySQL
从文档中:
目前,MySQL 对 UTF-8 的支持不包括四字节序列。(RFC 2279 给出了 UTF-8 编码的旧标准,它描述了占用 1 到 6 个字节的 UTF-8 序列。RFC 3629 使 RFC 2279 过时;因此,不再使用具有 5 和 6 个字节的序列.)
我收到此错误消息,其中 1 台客户端计算机建立 ODBC 连接以将数据拉入 Excel 电子表格。其他几台机器可以毫无问题地更新同一个电子表格。
经过一番搜索,我什么也没找到,所以开始尝试。ODBC 连接是使用 MySQL unicode 驱动程序设置的。我使用 ANSI 驱动程序重新创建了连接,它工作正常。
希望这对其他人有帮助。
遇到了同样的问题。是否可以在插入 mysql 数据库之前转换字符?
我在远程 Web 服务器上有一个 MySQL 数据库,没什么特别的。现在我正在使用 ODBC 驱动程序将远程 MySQL 数据库与我的本地 MS SQL Server 2008 连接。这很好用,但是当我尝试从 MSSQL 插入字符串值时,会发生错误。使用数字(int)效果很好。
语法看起来像
INSERT INTO OPENQUERY(
MYSQL,
'SELECT Adresse, Mandant, Matchcode FROM usr_p171552_2.Adressen'
) SELECT Adresse, Mandant, Matchcode FROM Adressen
好的。
我正在寻找类似的东西
INSERT INTO OPENQUERY(
MYSQL,
'SELECT Adresse, Mandant, Matchcode FROM usr_p171552_2.KHKAdressen'
) SELECT Adresse, Mandant, Matchcode FROM KHKAdressen CONVERTTOCHARSET compatiblecharset
它看起来像一个已知的错误。这是关于 MySQL 错误的问题。