【问题标题】:Upgrade to MySQL 8. Unknown character set index for field '255' received from server. Exception升级到 MySQL 8。从服务器接收到字段“255”的未知字符集索引。例外
【发布时间】:2018-07-23 12:59:10
【问题描述】:

mysql5 db已经使用了latin1latin1_general_ci字符编码设置,所有表也使用了这个字符集。

迁移到 mysql8 后(从 mysql5 到 mysql8 创建和恢复转储)错误:Unknown character set index for field '255' received from server. 连接到 db 时发生。

为什么会这样?,我想可能与mysql8默认使用utf8mb4字符集编码有关。

但是utf8mb4编码比latin1要宽,所以必须支持从latin1(1Byte)迁移到utf8mb4(4Bytes)不是反之亦然。

将 db 的字符集更改为 latin1 并将排序规则更改为 latin1_swedish_ci 不会生效。

有一些mysql8参数:

显示 'char%' 等变量;

character_set_client    utf8
character_set_connection    utf8
character_set_database  utf8mb4
character_set_filesystem    binary
character_set_results   utf8
character_set_server    utf8mb4
character_set_system    utf8
character_sets_dir  C:\Program Files\MySQL\MySQL Server 8.0\share\charsets\

MySql8 连接器驱动是:

mysql-connector-java v. 3.1.14

【问题讨论】:

    标签: mysql mysql-connector


    【解决方案1】:

    当我从我的 Java 应用程序执行脚本时,我遇到了这个问题。它显示的错误与主题行中提到的相同。

    解决方法是(在我的例子中,我们之前使用 latin1):在连接 url 中提供字符编码类型。

    ?characterEncoding=latin1
    

    这是java and mysql 之间使用的可用类型列表。这是java-mysql连接器jar的官方文档。

    【讨论】:

      【解决方案2】:

      解决这个问题的唯一方法是 从以下网站下载最新版本的连接器。 https://dev.mysql.com/downloads/connector/j/

      当您去那里时,如果您使用 Windows,则可以选择操作系统,然后选择与平台无关的选项,然后出现下载选项...下载 zip 文件并解压缩。然后转到您的项目并添加此 jar文件到库中。所以这就是你所有的问题都将得到解决。 希望此解决方案对您有用...

      【讨论】:

        猜你喜欢
        • 2011-05-05
        • 1970-01-01
        • 2018-11-01
        • 2019-07-30
        • 1970-01-01
        • 2023-03-13
        • 1970-01-01
        • 1970-01-01
        • 2014-01-25
        相关资源
        最近更新 更多