Mysql服务器不支持4字节编码的utf8字符

Mysql服务器不支持4字节编码的utf8字符,mysql,utf-8,character,utf8mb4,astral-plane,Mysql,Utf 8,Character,Utf8mb4,Astral Plane,我在运行从Sql server到MySql db的数据传输组件时收到一个服务器错误。 错误消息如下所示: [MySql][ODBC 5.1驱动程序][mysqld-5.0.67-community-nt-log]服务器不支持4字节编码的UTF8字符。 源Sql Server表包含nvarchar列,目标MySql表包含varchar列 有人能解释一下这个问题吗?“4字节编码的UTF-8字符”指的是代码点为0xFFFF的字符,即代码点不在16位之内的字符(在基本多语言平面(BMP)之外)。许多

我在运行从Sql server到MySql db的数据传输组件时收到一个服务器错误。 错误消息如下所示:


[MySql][ODBC 5.1驱动程序][mysqld-5.0.67-community-nt-log]服务器不支持4字节编码的UTF8字符。

源Sql Server表包含nvarchar列,目标MySql表包含varchar列

有人能解释一下这个问题吗?

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

BMP之外的字符通常是CJK字符;我不知道你的情况是否如此。:-)

来自:

目前,MySQL支持UTF-8 不包括四字节序列。 (UTF-8编码的旧标准 由RFC 2279给出,其描述 UTF-8序列,从1到 六个字节。RFC3629呈现RFC2279 过时;因此,序列 有五个和六个字节的 用过。)


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

  • 将MySQL更新为5.5.3,并使用utf8mb4进行列编码

  • 强制复制

  • 在SQLServer中创建一个新表,其结构与需要复制的表相同

  • 更改新表的列nvarchar(大小)->varchar(大小x2)

  • 将数据复制到新表中

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


  • 我也有同样的问题。是否可以在插入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
    

    我遇到了同样的问题,我可以通过简单地将SQL 2008上链接服务器上一行的
    char(1)
    列更新为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),问题就解决了。

    看起来像是一个已知的bug。这里是关于MySQL bug的问题


    我在一台客户端计算机进行ODBC连接以将数据拉入excel电子表格时收到此错误消息。其他几台机器可以毫不费力地更新同一个电子表格

    经过一番搜索,我什么也没找到,于是开始试验。ODBC连接是使用MySQL unicode驱动程序设置的。我使用ANSI驱动程序重新创建了连接,效果很好


    希望这对其他人有所帮助。

    @user251724:您的链接已过时。找不到该网站。匿名用户建议的编辑评论:MySQL v5.1中似乎不支持字符集“utf8mb4”。+1感谢您的宝贵发现。这是你知道的那些发现之一,但你需要几天才能找到。荣誉司机在这段文字上大吃一惊,“偏心”是字典中对“偏心”一词描述的一部分。它似乎正好在右括号后的点或点后的第一个奇数字符处崩溃。通过直接在底部“advanced”选项卡上的MySQL ODBC驱动程序设置中设置字符集“utf8”来解决此问题。这很有帮助,但如果我使用德国特殊字符,如“ö”或“ü”,字符串会断开。我找不到这个问题的解决方案,所以我编写了一个简单的MS SQL Server函数,用于转换这个字符。