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

Eri*_*dio 1 java firebird hibernate jdbc jaybird

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

错误:org.springframework.transaction.TransactionSystemException:无法回滚 JPA 事务;嵌套异常是 javax.persistence.PersistenceException:回滚时出现意外错误 javax.persistence.PersistenceException:回滚时出现意外错误 org.hibernate.TransactionException:JDBC 回滚失败 [SQL:335544726,HY000] org.firebirdsql.jdbc.FBSQLException:GDS 异常。335544726。从连接读取数据时出错。

原因:从连接读取数据时出错。...

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

错误:javax.persistence.PersistenceException:org.hibernate.exception.GenericJDBCException:无法执行查询org.hibernate.exception.GenericJDBCException:无法执行查询[SQL:335544721,HY000] org.firebirdsql.jdbc.FBSQLException:GDS异常。335544721. 无法完成对主机“”的网络请求。原因:无法完成对主机“”的网络请求。

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

以前有人经历过吗?

Eri*_*dio 5

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

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

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

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