当前位置: 首页 > 面试题库 >

从服务器收到未知的初始字符集索引“ 255”

秦宁
2023-03-14
问题内容

在尝试创建HibernateSession应用程序期间失败,但出现以下异常:

原因:java.sql.SQLException:从服务器收到未知的初始字符集索引‘255’。可以通过’characterEncoding’属性强制设置初始客户端字符集。在com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)在com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)在com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)

我在这里找到了一种可能的解决方案,但是很遗憾,我无法访问数据库服务器,因此无法更改其配置。
因此请注意,这不是重复的,因为为数据库服务器的更改提供了建议的解决方案,在我的情况下,我没有这种访问权限。

有机会在客户端解决此问题吗?在下面,您可以找到我创建会话的pom.xml文件和Java代码。

import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateUtil {
    private static final SessionFactory sessionFactory = buildSessionFactory();

    private static SessionFactory buildSessionFactory() {
        try {
            // Create the SessionFactory from hibernate.cfg.xml
            return new Configuration().configure().buildSessionFactory();
        } catch (Throwable ex) {
            // Make sure you log the exception, as it might be swallowed
            System.err.println("Initial SessionFactory creation failed." + ex);
            throw new ExceptionInInitializerError(ex);
        }
    }

    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }

    public static void shutdown() {
        // Close caches and connection pools
        getSessionFactory().close();
    }
}

还有我的pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    ...
    <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.6</version>
        </dependency>

        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>4.3.5.Final</version>
        </dependency>

        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>6.9.12</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>

问题答案:

进一步的调查表明,问题出在MySQL v.8.0中所做的更改中:

字符集支持

重要更改:默认字符集已从latin1更改为utf8mb4。这些系统变量会受到影响:

character_set_server和character_set_database系统变量的默认值已从 latin1 更改为
utf8mb4

在collat​​ion_server的和collat​​ion_database查看系统变量的缺省值已经从 latin1_swedish_ci
utf8mb4_0900_ai_ci

所有这些更改已在新版本的mysql-connector-java中处理,因此无需配置MySQL。因此,请从更改5.1.65.1.44解决此问题:

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


 类似资料:
  • 问题内容: 在尝试创建HibernateSession应用程序期间失败,但出现以下异常: 原因:java.sql.SQLException:从服务器接收到未知的初始字符集索引‘255’。可以通过’characterEncoding’属性强制设置初始客户端字符集。在com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)在com.my

  • 问题内容: 我有一个连接到服务器的Java客户端应用程序。客户端和服务器都在docker容器中运行。 我注意到官方mysql Docker镜像最近更新了mysql服务以运行 由于此更改,我的Java客户端应用程序无法连接到mysql实例;它失败,并显示以下错误: 我不拥有Java客户端应用程序的源代码,因此无法轻松升级它正在使用的JDBC驱动程序(即)。 这与以前运行mysqld的docker镜像

  • nifi-opcua-bundle-processors-0.0.1-snapshot.jar nifi-opcua-service-0.0.1-snapshot.jar nifi-opcua-service-api-0.0.1-snapshot.jar 如果我只粘贴nar文件,Nifi将启动,我可以看到自定义的GetNodeIds处理器,但我无法从OPCUA服务器接收数据。该服务抛出如下错误 哪

  • 我正在尝试创建一个TCP服务器,该服务器在端口5002上接受来自外部程序的消息。但是,它不接收来自外部程序的消息。 为了验证我的TCP服务器是否正常工作,我像这样使用了telnet,程序确实收到了文本“hello”。 设置wireshark时,我可以看到计算机正在端口5002上接收来自外部程序(我期待)的消息。为什么我的程序无法接收这些消息? 关于最终解决方案的最新情况: 由于负载没有停止线,我必

  • 据我所知,CMS collector收集老一代,它与ParNew collector(用于收集年轻一代)一起工作。对我来说,要清楚地理解CMS是如何工作的并不容易,但以下是我的看法: 1)初始标记。寻找根引用。由于收集器是旧的收集器,它应该只扫描旧的一代。 2) 并发标记找到所有根引用后,是时候开始并发标记了。从第一阶段中标记的对象可传递到达的所有对象都在该阶段中标记。 3) 并发预清理gc查看C

  • 我们正在使用解析存储聊天消息,我们正在使用解析通知。 对于iOS,我们这样做是为了在Parse的安装表中创建条目…它在parse的安装表中创建条目,我认为这是接收通知所必须的。 我没有收到来自解析的通知,我认为这是没有收到通知的原因… 事实是这样的吗? 有谁能帮我走上正路吗? 更新 现在收到通知但仍有些疑虑。我在用户登录时执行此操作。我有放条件,如果用户没有创建,那么只有创建,否则不。我没有把它加