java - 意外的 GDS 异常 : 335544726. 从连接读取数据时出错

标签 java hibernate jdbc firebird jaybird

我有一个在 Apache Tomcat 6 上运行的 Web 应用程序,使用 ZK、Hibernate 和 Jaybird JDBC 来访问 Firebird 数据库。由于某些未知原因,在执行动态 SQL 的应用程序中执行尚未映射的操作后,它崩溃并出现以下异常:

ERROR: org.springframework.transaction.TransactionSystemException: Could not roll back JPA transaction; nested exception is javax.persistence.PersistenceException: unexpected error when rollbacking javax.persistence.PersistenceException: unexpected error when rollbacking org.hibernate.TransactionException: JDBC rollback failed [SQL: 335544726, HY000] org.firebirdsql.jdbc.FBSQLException: GDS Exception. 335544726. Error reading data from the connection.

Reason: Error reading data from the connection. ...

然后,用户执行此操作后执行的任何操作都会导致以下错误:

ERROR: javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: could not execute query org.hibernate.exception.GenericJDBCException: could not execute query [SQL: 335544721, HY000] org.firebirdsql.jdbc.FBSQLException: GDS Exception. 335544721. Unable to complete network request to host "". Reason: Unable to complete network request to host "".

系统崩溃了,就像失去了与数据库的连接一样。

有人经历过吗?

最佳答案

经过一些研究和测试,我必须了解发生了什么。

当用户在应用程序中使用大小大于目标表字段大小的字符串执行特定搜索时,就会出现此问题。因此,当系统以字符串输入作为参数执行 HQL 查询时,系统崩溃了 - 就像将长度为 20 的字符串与 varchar(18) 字段进行比较时一样。

解决方案很简单:限制搜索字段中输入字符串的大小。

希望这对将来的任何人都有帮助。

关于java - 意外的 GDS 异常 : 335544726. 从连接读取数据时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22024153/

相关文章:

JavaFX 2 BorderPane 使用完整空间

java - TestNG - 如何在 MultipleTest 类中调用单个测试类

java - Spring JPA 多对多,额外列未更新

java - Postgresql 和 JDBC 检查元数据中的 TYPE ENUM

java - MySQL : multiple table insert with foreign key relationship

java - 使用 Java Swings 和 mysql 自动填充表单

java - ' (' or ' ['预期

java - Hibernate 期望 NUMBER 在空字段上得到 BINARY

java - hibernate -数据截断: Data too long for column - object field

jdbc - Tomcat JDBC连接池,创建连接数大于maxActive