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

发布于 2024-12-04 21:37:33 字数 790 浏览 0 评论 0原文

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

静待花开 2024-12-11 21:37:33

那是不可能的。

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

That won't be possible.

HyperSQL cannot be changed to accept non-standard naming schemes.

情深如许 2024-12-11 21:37:33

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

ALTER CATALOG PUBLIC RENAME TO EntAsdfDb007

然后您可以使用以下命令访问您的表

SELECT * FROM EntAsdfDb007.db.Data_Table

It is possible. HSQLDB does have one catalog per database. The catalog name is PUBLIC by default, which you can change.

ALTER CATALOG PUBLIC RENAME TO EntAsdfDb007

You can then access your table with

SELECT * FROM EntAsdfDb007.db.Data_Table
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文