代码之家  ›  专栏  ›  技术社区  ›  shipmaster

hsqldb内存设置的hsqldb约束冲突和sql查询日志

  •  0
  • shipmaster  · 技术社区  · 14 年前

    我们有一个安装程序,我们使用一个嵌入式HQLDB支持Java中的Hibernate /JPA单元测试,我们使用内存数据库模式,因为我们只是想在测试运行后扔掉数据库。我的问题是,其中一个测试由于约束冲突而失败,hsqldb将列列列列列列为sys_ct_286,日志中出现的查询是准备好的语句,在这里我看不到实际参数值是什么(它们被“?”替换)我的问题是:

    1-有没有一种方法可以让我看到正在执行的实际SQL?(比如mysql查询日志?).

    2-系统到底是什么?它不是我的列之一,是生成的列吗?是否有明显的问题?

    谢谢。

    2 回复  |  直到 14 年前
        1
  •  1
  •   Community Nick Dandoulakis    7 年前

    有没有一种方法可以让我看到正在执行的实际SQL?

    我不确定hsqldb是否允许记录正在执行的SQL语句(如select),但您可以使用代理JDBC驱动程序,如 P6Spy 为此(已在 this answer )

    系统到底是什么?

    这是一个约束(我打赌是唯一的约束)。

        2
  •  1
  •   Don Roby    14 年前

    hsqldb保存了一个重做日志,这对于调试已经运行的SQL可能很有用,但我不确定它是否为内存中的数据库执行此操作。如果将数据库临时更改为基于文件的数据库test,则重做日志应命名为test.log,但在完全关闭时会消失。

    系统生成的名称很可能是一个约束。同样,如果您创建了一个基于文件的数据库,那么您可能能够查看它并找出它是用于什么的约束。如果这是你定义的一个约束,你甚至可以改变你的映射,从而得到一个合理的名称。我知道你可以用外键约束来做这个。