我有一个在 Apache Tomcat 6 上运行的 Web 应用程序,使用 ZK、Hibernate 和 Jaybird JDBC 来访问 Firebird 数据库。由于某些未知原因,在执行动态 SQL 的应用程序中执行尚未映射的操作后,它崩溃并出现以下异常:
block 引用>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. ...
然后,用户执行此操作后执行的任何操作都会导致以下错误:
block 引用>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/