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

t1qtbnec  于 2021-06-20  发布在  Mysql
关注(0)|答案(14)|浏览(624)

在建立到mysql数据库的连接时,我得到以下错误

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

在google上,我知道我们需要修改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中部署我的应用程序,并运行restapi调用,该调用将连接到数据库。当连接到数据库时,我发现上面的错误。

szqfcxe2

szqfcxe21#

我正在使用 springboot , liquibase , mysql 我得到了解决方案:这个错误的发生仅仅是因为依赖关系中的mysql连接器和您安装的mysql服务器不匹配(在我的例子中,我使用的是较低版本的mysql连接器和最新的mysql服务器)。所以只要把mysql连接器的作用域改为 runtime :
Maven

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

grad尔

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

或者如果问题还没有解决,那么对mysql服务器和mysql连接器使用相同的版本或相近的版本。

4ktjp1zp

4ktjp1zp2#

向连接字符串中添加以下内容应该可以:

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

vs91vp4v3#

根据已安装的mysql server,应要求兼容版本的mysql connector java--->对于已安装的mysql server 8.0,我在soapui/bin/ext文件夹中下载mysql-connector-java-8.0.20或在eclipse中下载项目的构建路径。对我有用!!

llmtgqce

llmtgqce4#

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

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

可能有用。

bpzcxfmw

bpzcxfmw5#

设置字符编码,使用Unicode选项将起作用
jdbc:mysql://localhost:3306/dbname?characterencoding=utf8&usessl=false&useunicode=true"

aamkag61

aamkag616#

使用mysql connector java的5.1.44版本。

<dependency>
   <groupId>mysql</groupId>
   <artifactId>mysql-connector-java</artifactId>
   <version>5.1.44</version>
</dependency>
osh3o9ms

osh3o9ms7#

使用相同版本的mysql和mysql connector。如果您使用的是tomcat,那么将连接器保存在tomcat的lib文件夹中。

blmhpbnm

blmhpbnm8#

在版本8中,默认字符集已更改。当您将字符集添加到连接url时,如?characterencoding=latin1,它可能会起作用。

5f0d552i

5f0d552i9#

听起来你需要下载最新的连接器jjar:
http://chillyfacts.com/java-sql-sqlexception-unknown-initial-character-set-index-224-received-server/

knsnq2tg

knsnq2tg10#

使用mysqlworkbench界面:
第一次点击连接->

单击选项文件后

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

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

iih3973s

iih3973s11#

只需从下载最新版本的hibernate jar文件
https://www.javatpoint.com/src/hb/hibernatejar.zip
以及
https://dev.mysql.com/downloads/connector/j/5.1.html

5tmbdcev

5tmbdcev12#

这是因为mysql连接器版本,即。我的sql安装版本和依赖项版本不匹配。
对mys使用相同的版本

kokeuurv

kokeuurv13#

在与mysql服务器8.0.x版本交叉检查后,在pom文件中添加连接器依赖项jar文件添加此依赖项mysqlmysql connector java8.0.11

mnowg1ta

mnowg1ta14#

我修复它的方法是:将characterencoding=utf8添加到jdbc连接字符串的末尾
例如。 connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/photo_app?" + "user=root&password=root&characterEncoding=utf8");

相关问题