4

我收到了从 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 列。

任何人都可以阐明这个问题吗?

4

8 回答 8

7

如果您需要 MySQL 支持 4 字节 UTF-8 字符(通常被认为是 UTF-8 的一部分),您需要使用字符集 utf8mb4,而不是 utf8。MySQL 5.5.3 首次支持 utf8mb4。

于 2012-07-26T15:30:03.107 回答
2

我有同样的问题,我可以通过简单地将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),问题就消失了。

于 2012-12-18T19:21:46.793 回答
1

“4 字节编码的 UTF-8 字符”是指带有代码点的字符> 0xFFFF,即代码点不适合 16 位的字符(在基本多语言平面(BMP) 之外)。许多旧系统不支持 BMP 之外的字符。

BMP 以外的字符通常是 CJK 字符;不知道你这里是不是这样。:-)

于 2009-12-11T20:33:48.537 回答
1
  1. 将您的 MySQL 更新到 5.5.3 并使用 utf8mb4 进行列编码。

  2. 强制复制

  3. 在 SQLServer 中创建一个与您需要复制的表具有相同结构的新表

  4. 更改新表的列 nvarchar(size) -> varchar(size x 2)

  5. 将数据复制到新表中

  6. 将 SQLServer 的数据从新表复制到 MySQL

于 2012-09-20T09:02:57.837 回答
1

文档中:

目前,MySQL 对 UTF-8 的支持不包括四字节序列。(RFC 2279 给出了 UTF-8 编码的旧标准,它描述了占用 1 到 6 个字节的 UTF-8 序列。RFC 3629 使 RFC 2279 过时;因此,不再使用具有 5 和 6 个字节的序列.)

于 2009-12-11T20:35:09.390 回答
0

我收到此错误消息,其中 1 台客户端计算机建立 ODBC 连接以将数据拉入 Excel 电子表格。其他几台机器可以毫无问题地更新同一个电子表格。

经过一番搜索,我什么也没找到,所以开始尝试。ODBC 连接是使用 MySQL unicode 驱动程序设置的。我使用 ANSI 驱动程序重新创建了连接,它工作正常。

希望这对其他人有帮助。

于 2014-12-12T16:38:01.787 回答
0

遇到了同样的问题。是否可以在插入 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
于 2012-12-04T18:08:47.393 回答
0

它看起来像一个已知的错误。这是关于 MySQL 错误的问题。

http://bugs.mysql.com/bug.php?id=67428

于 2013-09-05T22:26:29.450 回答