如何支持在HyperSQL中支持SqlServer的“..”?

时间:2011-09-15 14:17:28

标签: java sql-server unit-testing hsqldb

tl; dr:我正在尝试对一些SqlServer查询进行单元测试,这些查询说明了db名称,但它们似乎在HyperSql中不起作用。


我们正在生产中使用Sql Server,我正在尝试使用HyperSQL作为我的数据库进行单元测试。我正在尝试测试一个创建SQL查询的类,因此删除数据库不是一个选项,因为真实数据库解析的查询是测试的一部分。

查询应该以{{1​​}}的形式创建,但如果我们愿意,我们可以使用模式名称('db')。

根据我对SqlServer的SELECT格式的理解,它允许您指定数据库的名称,后跟schema的名称。此外,您可以删除数据库的名称并进行推断。

在HyperSqlDb中,我能够创建模式“db”并在其中创建必要的表,并且能够在该模式中创建表,但即使设置了该模式,我也无法使用数据库名查询使用SELECT * FROM EntAsdfDb007..Data_Table的数据库名称。我得到的例外是:

.setDatabaseName()

为了清楚起见:我正在对使用SQL Caused by: org.hsqldb.HsqlException: user lacks privilege or object not found: ENTASDFDB007 等SQL的类进行单元测试。我正在尝试设置HyperSql实例以进行单元测试,但HyperSql似乎拒绝使用的语法。

2 个答案:

答案 0 :(得分:1)

那是不可能的。

无法更改HyperSQL以接受非标准命名方案。

答案 1 :(得分:0)

有可能。 HSQLDB每个数据库都有一个目录。默认情况下,目录名称为PUBLIC,您可以更改。

ALTER CATALOG PUBLIC RENAME TO EntAsdfDb007

然后,您可以使用

访问您的表格
SELECT * FROM EntAsdfDb007.db.Data_Table