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似乎拒绝使用的语法。
答案 0 :(得分:1)
那是不可能的。
无法更改HyperSQL以接受非标准命名方案。
答案 1 :(得分:0)
有可能。 HSQLDB每个数据库都有一个目录。默认情况下,目录名称为PUBLIC,您可以更改。
ALTER CATALOG PUBLIC RENAME TO EntAsdfDb007
然后,您可以使用
访问您的表格SELECT * FROM EntAsdfDb007.db.Data_Table