tl;dr:,我正在尝试对一些SqlServer查询进行单元测试,这些查询声明数据库名称,但它们在HyperSql中似乎不起作用。
我们在生产中使用Server,我试图使用HyperSQL作为我的数据库进行单元测试。我正在尝试测试一个创建SQL查询的类,因此不能选择将数据库挂起,因为真正的数据库所解析的查询是测试的一部分。
查询应该以SELECT * FROM EntAsdfDb007..Data_Table的形式创建,但如果愿意,我们可以使用模式名称( 'db‘)。
根据我对SqlServer的SELECT格式的了解,它允许您指定数据库的名称,然后是模式的名称。此外,您还可以删除数据库的名称并进行推断。
在HyperSqlDb中,我能够创建模式“DB”并在其中创建必要的表,并且能够在该模式中创建表,但即使在使用.setDatabaseName()设置数据库名称之后,也无法使用数据库名称进行查询。我得到的例外是:
Caused by: org.hsqldb.HsqlException: user lacks privilege or object not found: ENTASDFDB007只是要明确一点:I是单元测试类,它使用SELECT * FROM EntAsdfDb007..Data_Table之类的SQL。我试图为单元测试目的设置一个HyperSql实例,但HyperSql似乎拒绝所使用的语法。
发布于 2011-09-15 14:27:59
那是不可能的
不能将HyperSQL更改为接受非标准命名方案。
发布于 2016-11-24 18:56:20
这是可能的。HSQLDB每个数据库都有一个目录。默认情况下,目录名称是公共的,您可以更改该名称。
ALTER CATALOG PUBLIC RENAME TO EntAsdfDb007然后,您可以使用
SELECT * FROM EntAsdfDb007.db.Data_Tablehttps://stackoverflow.com/questions/7432350
复制相似问题