在尝试创建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:926)
)
我在这里找到了一种可能的解决方案,但是很遗憾,我无法访问数据库服务器,因此无法更改其配置。
因此请注意,这不是重复的,因为为数据库服务器的更改提供了建议的解决方案,在我的情况下,我没有这种访问权限。
有机会在客户端解决此问题吗?在下面,您可以找到我创建会话的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 。在collation_server的和collation_database查看系统变量的缺省值已经从 latin1_swedish_ci
到 utf8mb4_0900_ai_ci 。
所有这些更改已在新版本的mysql-connector-java中处理,因此无需配置MySQL。因此,请从更改5.1.6
为5.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.mys
问题内容: 我有一个连接到服务器的Java客户端应用程序。客户端和服务器都在docker容器中运行。 我注意到官方mysql Docker镜像最近更新了mysql服务以运行 由于此更改,我的Java客户端应用程序无法连接到mysql实例;它失败,并显示以下错误: 我不拥有Java客户端应用程序的源代码,因此无法轻松升级它正在使用的JDBC驱动程序(即)。 这与以前运行mysqld的docker镜像
我正在尝试创建一个TCP服务器,该服务器在端口5002上接受来自外部程序的消息。但是,它不接收来自外部程序的消息。 为了验证我的TCP服务器是否正常工作,我像这样使用了telnet,程序确实收到了文本“hello”。 设置wireshark时,我可以看到计算机正在端口5002上接收来自外部程序(我期待)的消息。为什么我的程序无法接收这些消息? 关于最终解决方案的最新情况: 由于负载没有停止线,我必
我试图创建一个Unix套接字数据报示例。客户端可以流畅地发送和接收消息。在缓冲区长度小于< code>SOCKET_BUFFER_SIZE的情况下,服务器能够做到这一点,否则服务器的输出会在接收的缓冲区显示一些无效字符。 客户代码 服务器的代码 头文件 这是我得到的 奇怪的是,客户端收到了预期的消息,尽管服务器在发送之前没有正确格式化消息。 这是我的预期输出 我该如何解决?
问题内容: 我正在尝试用两个客户端实现一个系统,其中一个客户端发送一条消息,而另一个客户端将接收该消息。下图将以更直观的方式对其进行解释: 因此,客户端1将消息发送到服务器(此工作正常),服务器接收到“推送”消息并发出应由客户端2接收的“弹出”消息。这里的问题是客户端2从未收到“流行”消息。:( 这是所有代码。 SERVER.JS 客户1(aka mobile.html) 客户2(aka web.
我有以下代码要(尝试)写入服务器: 我在远程计算机上的服务器代码中有一个断点,我有一个通过这个套接字通信的Visual Basic程序。我运行了Visual Basic代码,并(反复)验证服务器是否在那里,监听这个套接字,并且通过运行该程序可以触及断点。 当我运行这个程序时,我不会碰到断点。我尝试了设置套接字的各种方法,例如只使用“new socket()”实例化套接字,然后使用setter方法设