在建立与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;
因此我的桌子看起来像这样
在此之后,我重新启动了MySQL服务器,但我仍然遇到上述错误。
请注意我在tomcat中部署我的应用程序并运行将连接到数据库的rest API调用。连接到数据库时,我收到上述错误。
对于版本8,默认字符集更改。当您将字符集添加到连接URL时,如?character Encoding = latin1,它可能会起作用。
这是因为mysql-connector版本,我,e。 My-sql安装版本和依赖版本不匹配。
为myS使用相同的版本
在与MySql服务器版本8.0.x交叉检查之后,在POM文件中添加连接器依赖性jar文件添加它对我有用的依赖关系mysqlmysql-connector-java 8.0.11
使用相同版本的MySQL以及mysql-connector。如果您使用的是tomcat,请将连接器保留在tomcat的lib文件夹中。
你可以在你的url字符串之后添加?characterEncoding=latin1"
,例如:
"jdbc:mysql://localhost/yourDB?characterEncoding=latin1";
它可能会奏效。
我正在使用springboot
,liquibase
,mysql
我得到了解决方案:这个错误只是因为依赖的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连接器。