首页 文章

用于HSQLDB内存设置的HSQLDB约束违例和SQL查询日志

提问于
浏览
0

我们有一个设置,我们使用嵌入式HSQLDB来支持java中的Hibernate / JPA单元测试,我们使用内存数据库模式,因为我们只是希望在测试运行后扔掉数据库 . 我的问题是其中一个测试由于违反约束而失败,并且HSQLDB将列列为SYS_CT_286,并且日志中显示的查询是准备好的语句,我无法看到实际参数值是什么(它们被替换为'?') . 我的问题是:

1-有没有办法可以看到实际执行的SQL? (比如mysql查询日志?) .

2- SYS_CT_286究竟是什么?它不是我的专栏之一,它是生成的列吗?有什么明显可能是错的吗?

谢谢 .

2 回答

  • 1

    HSQLDB保留一个重做日志,这可能对调试已运行的sql很有用,但我不确定它是否为内存数据库执行此操作 . 如果将db暂时更改为名为test的基于文件的db,则重做日志应命名为test.log,但在干净关闭时它会消失 .

    SYS_CT_286很可能是具有系统生成名称的约束 . 同样,如果您创建基于文件的数据库,您可能能够查看它并找出它的约束条件 . 如果它是您正在定义的约束,您甚至可以更改映射,以便获得合理的名称 . 我知道无论如何你都可以用外键约束来做到这一点 .

  • 1

    有没有办法可以看到实际执行的SQL?

    我不确定HSQLDB是否允许记录正在执行的SQL语句(如select),但您可以使用像P6Spy这样的代理JDBC驱动程序(已在this answer中提及) .

    SYS_CT_286究竟是什么?

    这是一个约束(我打赌一个独特的约束) .

相关问题