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

java.sql.SQLException:未知的初始字符集索引';255';从连接器8.0.11的服务器接收,java,mysql,jdbc,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

在建立到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中部署我的应用程序,并运行RESTAPI调用,该调用将连接到数据库。连接到数据库时,我遇到了上述错误。

听起来您需要下载最新的连接器j jar:


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

使用MySQLWorkbench界面:

首先单击您的连接->

在选项文件中单击后

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


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

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


在与MySql服务器版本8.0交叉检查后,在POM文件中添加连接器依赖项jar文件。x添加此依赖项它对我有效MySql连接器java 8.0.11

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

您可以在url字符串后添加
?characterEncoding=latin1”
,如下所示 例如:

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

它可能有用。

我正在使用
springboot
liquibase
mysql

我得到了解决方案: 发生此错误的原因是依赖项中的mysql连接器与您安装的mysql服务器不匹配(在我的示例中,我使用的是较低版本的mysql连接器和最新的mysql服务器)。因此,只需将mysql连接器的作用域更改为运行时:

maven

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

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

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

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

只需从

以及来自

设置字符编码,使用Unicode选项将起作用


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

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

使用mysql connector java的5.1.44版

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

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


例如,
connection=DriverManager.getConnection(“jdbc:mysql://localhost:3306/photo_app?“+”user=root&password=root&characterEncoding=utf8“

您确定正在使用连接器/J 8.0.11吗。
connection.getMetaData().getDriverVersion()
返回什么?请注意,更改特定列的字符集不会更改连接字符集的内容。在MySQL配置中,您发现需要更改哪两个参数?您是否尝试过按照错误消息中的建议指定
characterEncoding
连接属性?您好,我仅使用最新版本的connector j jar,即我使用的是8.0.11版本,不适用于URL中的meAdded
?characterEncoding=utf8
<dependency>
   <groupId>mysql</groupId>
   <artifactId>mysql-connector-java</artifactId>
   <version>5.1.44</version>
</dependency>