【问题标题】:java.sql.SQLException: Unknown initial character set index '255' received from server for connector 8.0.11java.sql.SQLException:从连接器 8.0.11 的服务器收到的未知初始字符集索引“255”
【发布时间】:2018-11-01 14:30:03
【问题描述】:

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

【问题讨论】:

  • 您确定您使用的是Connector/J 8.0.11。 connection.getMetaData().getDriverVersion() 返回什么?
  • 请注意,更改特定列的字符集不会更改连接字符集的内容。您发现您需要在 MySQL 配置中更改哪两个参数?您是否尝试过按照错误消息中的建议指定 characterEncoding 连接属性?

标签: java mysql jdbc


【解决方案1】:

【讨论】:

  • 您好,我只使用最新版本的连接器 j jar,即我使用的是 8.0.11 版本
【解决方案2】:

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

【讨论】:

  • 在 URL 中添加了?characterEncoding=utf8
【解决方案3】:

使用 MySQLWorkbench 接口:

首先点击你的连接 ->

点击选项文件后

并将 character-set-server 和 collat​​ion-server 值更改为以下值:

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

【讨论】:

  • 不适合我
【解决方案4】:

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

对 myS 使用相同的版本

【讨论】:

    【解决方案5】:

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

    【讨论】:

      【解决方案6】:

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

      【讨论】:

        【解决方案7】:

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

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

        它可能会起作用。

        【讨论】:

          【解决方案8】:

          我正在使用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】:

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

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

            【讨论】:

              【解决方案10】:

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

              的 MySQL 连接器 jar 文件

              【讨论】:

                【解决方案11】:

                设置 CharacterEnconding,useUnicode 选项将起作用

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

                【讨论】:

                  【解决方案12】:

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

                  【讨论】:

                    【解决方案13】:

                    使用 mysql-connector-java 版本 5.1.44。

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

                    【讨论】:

                      【解决方案14】:

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

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

                      【讨论】:

                        【解决方案15】:

                        使用最新版本的mysql-connector

                        mysql mysql-connector-java 8.0.25
                        

                        【讨论】:

                          猜你喜欢
                          • 2019-07-30
                          • 1970-01-01
                          • 2011-05-05
                          • 1970-01-01
                          • 1970-01-01
                          • 2023-03-13
                          • 1970-01-01
                          • 1970-01-01
                          • 2017-10-14
                          相关资源
                          最近更新 更多