java.sql.SQLException:未知的初始字符集索引';255';从连接器8.0.11的服务器接收
在建立到MySQL数据库的连接时,我得到以下错误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
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>