Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java HSQLDB数据库中神秘的完整性约束冲突_Java_Sql_Sql Server_Hibernate_Hsqldb - Fatal编程技术网

Java HSQLDB数据库中神秘的完整性约束冲突

Java HSQLDB数据库中神秘的完整性约束冲突,java,sql,sql-server,hibernate,hsqldb,Java,Sql,Sql Server,Hibernate,Hsqldb,我们正在设计Java应用程序,以支持HSQL数据库,以及SQL Server和Oracle等企业数据库。我的任务是编写一个全面的测试套件,涵盖应用程序中的主要数据库操作。测试套件在SQL Server上成功运行,但当我使用HSQLDB执行相同的测试时,总是会失败。以下是堆栈跟踪的一部分: Caused by: java.sql.SQLIntegrityConstraintViolationException: integrity constraint violation: foreign key

我们正在设计Java应用程序,以支持HSQL数据库,以及SQL Server和Oracle等企业数据库。我的任务是编写一个全面的测试套件,涵盖应用程序中的主要数据库操作。测试套件在SQL Server上成功运行,但当我使用HSQLDB执行相同的测试时,总是会失败。以下是堆栈跟踪的一部分:

Caused by: java.sql.SQLIntegrityConstraintViolationException: integrity constraint
violation: foreign key no parent; FKREQKDHUAI8BYVMWC5RMTJ3UFA table: FAVORITE_FILE
    at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
    at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
    at org.hsqldb.jdbc.JDBCPreparedStatement.fetchResult(Unknown Source)
    at org.hsqldb.jdbc.JDBCPreparedStatement.executeUpdate(Unknown Source)
    at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeUpdate(NewProxyPreparedStatement.java:384)
    at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:204)
    ... 91 more
Caused by: org.hsqldb.HsqlException: integrity constraint violation: foreign key no parent;
FKREQKDHUAI8BYVMWC5RMTJ3UFA table: FAVORITE_FILE
    at org.hsqldb.error.Error.error(Unknown Source)
    at org.hsqldb.Constraint.getException(Unknown Source)
    at org.hsqldb.Constraint.checkInsert(Unknown Source)
    at org.hsqldb.StatementDML.performIntegrityChecks(Unknown Source)
    at org.hsqldb.StatementDML.insertSingleRow(Unknown Source)
    at org.hsqldb.StatementInsert.getResult(Unknown Source)
    at org.hsqldb.StatementDMQL.execute(Unknown Source)
    at org.hsqldb.Session.executeCompiledStatement(Unknown Source)
    at org.hsqldb.Session.execute(Unknown Source)
    ... 95 more
这里真正神秘的事情是,失败发生在测试中的某个点上,而该点与
收藏夹文件
表无关。相反,我在尝试对不同的表(
OFFLINE\u FILE
)执行
INSERT
时,或者尝试从不同的表中删除记录时,观察到了此故障


我希望专家能看到这个堆栈跟踪和用例,并能提供一些关于正在发生的事情的见解。再次重申,在SQL Server上运行时不会出现这些错误。我的直觉是,HSQLDB的持久性层中存在一些问题/缺陷,但我无法证实这一点。

经过更广泛的测试后,我们发现类似的问题也在SQL Server和Oracle上大量出现。结果表明,我们没有关闭
FAVORITE\u文件
表上的交易。这个Hibernate错误是我们收到错误消息的根本原因。关闭事务导致错误消失


这个问题对我们来说是一次很好的学习经历,因为我们意识到当Hibernate出现错误时,我们应该在询问数据库之前先询问自己代码的正确性。

我在junits for hsql中也遇到过类似的错误,你能分享你的junit类的代码吗?你需要在HSQLDB项目论坛上发布一个链接。使用SCRIPT命令获取DDL,并报告与表(父表、外键和插入目标)相关的所有CREATE和ALTER行,包括所有索引。