java.sql.SQLException:从连接器8.0.11的服务器收到的未知初始字符集索引“255”

问题描述 投票:4回答:7

在建立与MySQL数据库的连接时,我收到以下错误

java.sql.SQLException: Unknown initial character set index '255' received from 
server. Initial client character set can be forced via the 'characterEncoding' 
property.

在谷歌搜索时,我知道我们需要在my.ini或my.cnf中修改2个参数。

我使用的是MySQL 8.0.11版,它没有这个文件。

因此我使用SQL命令修改了这些参数: 请注意,名称和持续时间是表格中的列名称。

ALTER TABLE courses MODIFY name VARCHAR(50) COLLATE utf8_unicode_ci;    
ALTER TABLE courses MODIFY duration VARCHAR(50) COLLATE utf8_unicode_ci;

ALTER TABLE courses MODIFY name VARCHAR(50) CHARACTER SET utf8;
ALTER TABLE courses MODIFY duration VARCHAR(50) CHARACTER SET utf8;

因此我的桌子看起来像这样

Table

在此之后,我重新启动了MySQL服务器,但我仍然遇到上述错误。

请注意我在tomcat中部署我的应用程序并运行将连接到数据库的rest API调用。连接到数据库时,我收到上述错误。

java mysql jdbc
7个回答
7
投票

使用MySQLWorkbench接口:

首先单击您的连接 - >

enter image description here

单击选项文件后

enter image description here

并将字符集服务器和排序规则服务器值更改为以下值:

enter image description here

确保通过打开服务并重新启动mysql服务器来重启mysql服务器。



2
投票

对于版本8,默认字符集更改。当您将字符集添加到连接URL时,如?character Encoding = latin1,它可能会起作用。


1
投票

这是因为mysql-connector版本,我,e。 My-sql安装版本和依赖版本不匹配。

为myS使用相同的版本


0
投票

在与MySql服务器版本8.0.x交叉检查之后,在POM文件中添加连接器依赖性jar文件添加它对我有用的依赖关系mysqlmysql-connector-java 8.0.11


0
投票

使用相同版本的MySQL以及mysql-connector。如果您使用的是tomcat,请将连接器保留在tomcat的lib文件夹中。


0
投票

你可以在你的url字符串之后添加?characterEncoding=latin1",例如:

"jdbc:mysql://localhost/yourDB?characterEncoding=latin1";

它可能会奏效。


0
投票

我正在使用springbootliquibasemysql

我得到了解决方案:这个错误只是因为依赖的mysql连接器和你安装的mysql服务器不匹配(在我的情况下我使用的是较低版本的mysql连接器和最新的mysql服务器)。所以只需将mysql连接器的范围更改为runtime

行家

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>

gradle这个

dependencies {
//... other dependencies
runtimeOnly group:'mysql', name:'mysql-connector-java'
}

或者如果问题尚未解决,则使用相同版本或附近版本的mysql服务器和mysql连接器。

© www.soinside.com 2019 - 2024. All rights reserved.