在建立与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调用。连接到数据库时,我收到了上述错误。
答案 0 :(得分:6)
使用MySQLWorkbench界面:
首先单击您的连接->
点击选项文件后
并将字符集服务器和排序规则服务器的值更改为以下值:
确保通过打开服务并重新启动mysql服务器来重新启动mysql服务器。
答案 1 :(得分:3)
听起来你需要下载最新的连接器j jar:
答案 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)
我正在使用springboot
,liquibase
,mysql
我有解决方法:
发生此错误仅仅是因为依赖项中的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