如何支持支持SqlServer的“..”在 HyperSQL 中?
tl;dr: 我正在尝试对一些 SqlServer 查询进行单元测试,这些查询声明了数据库名称,但它们似乎在 HyperSql 中不起作用。
我们在生产中使用 Sql 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
需要明确的是:我正在对一个使用诸如 SELECT * FROM EntAsdfDb007..Data_Table
之类的 SQL 的类进行单元测试。我正在尝试设置 HyperSql 实例以进行单元测试,但 HyperSql 似乎拒绝使用所使用的语法。
tl;dr: I am trying to unit test some SqlServer queries which state the db name but they do not seem to work in HyperSql.
We are using Sql Server in production and I am trying to use HyperSQL as my database for unit testing. I am trying to test a class that creates SQL queries so stubbing out the database is not an option as having the queries parsed by a real database is part of the test.
Queries are supposed to be created in the form of SELECT * FROM EntAsdfDb007..Data_Table
, although we can use the schema name ( 'db' ) if we wish.
From what I understand about the SELECT format for SqlServer, it allows you to specify the name of database followed by the name of schema. Also, you can drop the name of the database and have it inferred.
In HyperSqlDb I have been able to create the schema 'db' and create the necessary tables within it, and have been able to create tables within that schema but I have not be able to query with the database name even after setting the DB name using .setDatabaseName()
. The exception I get is:
Caused by: org.hsqldb.HsqlException: user lacks privilege or object not found: ENTASDFDB007
Just to be clear: I am unit-testing a class that uses SQL like SELECT * FROM EntAsdfDb007..Data_Table
. I am trying to set up an instance of HyperSql for unit testing purposes but HyperSql seems to reject the syntax used.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
那是不可能的。
无法更改 HyperSQL 以接受非标准命名方案。
That won't be possible.
HyperSQL cannot be changed to accept non-standard naming schemes.
这是可能的。 HSQLDB 每个数据库都有一个目录。默认情况下,目录名称为 PUBLIC,您可以更改该名称。
然后您可以使用以下命令访问您的表
It is possible. HSQLDB does have one catalog per database. The catalog name is PUBLIC by default, which you can change.
You can then access your table with