mysql - 升级到 MySQL 8。从服务器收到字段 '255' 的未知字符集索引。异常(exception)

标签 mysql mysql-connector

mysql5 db已使用latin1latin1_general_ci字符编码设置,所有表也使用此字符集。

迁移到 mysql8 后(从 mysql5-to-mysql8 创建并恢复转储),错误:从服务器收到的字段“255”的字符集索引未知。在连接到数据库时发生。

为什么会出现这种情况?我想可能与mysql8默认使用utf8mb4字符集编码有关。

但是utf8mb4编码比latin1更宽,因此必须支持从latin1(1Byte)迁移到utf8mb4(4字节),反之则不然。

将数据库字符集更改为 latin1 并将排序规则更改为 latin1_swedish_ci 不会生效。

有一些 mysql8 参数:

SHOW VARIABLES LIKE '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

最佳答案

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

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

?characterEncoding=latin1

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

关于mysql - 升级到 MySQL 8。从服务器收到字段 '255' 的未知字符集索引。异常(exception),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51479441/

相关文章:

mysql - trustCertificateKeyStoreUrl 与 clientCertificateKeyStoreUrl

mysql - 在 ASP.Net 中总是无法连接 mySQL 数据库

mysql - 检查 Laravel 5 中单列中的多个值

php - 在没有 MVC 的情况下将 HTML 与 PHP PDO 分开?

c# - 用于将 3 个主节点连接到 MySQL 的 ConnectionString

mysql - 向 MySQL 添加新连接时 Visual Studio 2015 崩溃

MySQL - 尝试为每个不同的日期返回一行;显示现金、信用和总计

php - 如何获取 column1 中的 value1 和 column2 中的 value2 但 column1 中的 value2 在 column2 中没有 value1 的行?

mysql - MySQL单个单词列的 bool 模式搜索

Python MYSQL-connector 备份创建