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

时间:2018-05-22 18:20:44

标签: java mysql jdbc

在建立与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调用。连接到数据库时,我收到了上述错误。

15 个答案:

答案 0 :(得分:6)

使用MySQLWorkbench界面:

首先单击您的连接->

enter image description here

点击选项文件后

enter image description here

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

enter image description here

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

答案 1 :(得分:3)

答案 2 :(得分:2)

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

答案 3 :(得分:1)

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

为myS使用相同版本

答案 4 :(得分:1)

只需从以下位置下载最新版本的hibernate jar文件
https://www.javatpoint.com/src/hb/hibernatejar.zip
和来自
的MySQL连接器jar文件 https://dev.mysql.com/downloads/connector/j/5.1.html

答案 5 :(得分:0)

在与您的MySql服务器版本8.0.x进行交叉检查后,在POM文件中添加连接器依赖项jar文件,添加此依赖项对我有用mysqlmysql-connector-java 8.0.11

答案 6 :(得分:0)

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

答案 7 :(得分:0)

您可以像这样在网址字符串后添加?characterEncoding=latin1" 例如:

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

可能有效。

答案 8 :(得分:0)

我正在使用springbootliquibasemysql

我有解决方法: 发生此错误仅仅是因为依赖项中的mysql连接器和您安装的mysql服务器不匹配(在我的情况下,我使用的是较低版本的mysql连接器和最新的mysql服务器)。因此,只需将mysql连接器的范围更改为runtime

专家

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

渐变

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

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

答案 9 :(得分:0)

将以下内容添加到您的连接字符串中应该可以:

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

答案 10 :(得分:0)

设置CharacterEnconding,useUnicode选项将起作用

jdbc:mysql:// localhost:3306 / dbname?characterEncoding = utf8&useSSL = false&useUnicode = true“

答案 11 :(得分:0)

每个已安装的MySQL服务器都需要兼容版本的mysql-connector-java --->对于已安装的MySQL Server 8.0,我在SoapUi / bin / ext文件夹中下载mysql-connector-java-8.0.20或在Eclipse中构建项目的路径。 它对我有用!

答案 12 :(得分:0)

使用mysql-connector-java版本5.1.44。

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

答案 13 :(得分:0)

我修复它的方式: 将 characterEncoding = utf8 添加到jdbc连接字符串的末尾

例如connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/photo_app?" + "user=root&password=root&characterEncoding=utf8");

答案 14 :(得分:0)

使用最新版本的mysql-connector

mysql mysql-connector-java 8.0.25