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

sac*_*ath 4 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.
Run Code Online (Sandbox Code Playgroud)

在谷歌搜索时,我知道我们需要在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;
Run Code Online (Sandbox Code Playgroud)

因此我的桌子看起来像这样

表

在此之后,我重新启动了MySQL服务器,但我仍然遇到上述错误.

请注意我在tomcat中部署我的应用程序并运行将连接到数据库的rest API调用.连接到数据库时,我收到上述错误.

小智 10

在第 8 版中,默认字符集发生了变化。当您将字符集添加到连接 URL 时,如 ?characterEncoding=latin1 可能会起作用。

  • 在 URL 中添加了 `?characterEncoding=utf8`。 (2认同)

小智 7

使用MySQLWorkbench接口:

首先单击您的连接 - >

在此输入图像描述

单击选项文件后

在此输入图像描述

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

在此输入图像描述

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

  • 不适合我 (2认同)

Man*_*tel 5

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

"jdbc:mysql://localhost/yourDB?characterEncoding=latin1";
Run Code Online (Sandbox Code Playgroud)

它可能会起作用。