mysql5 db已使用latin1和latin1_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/