3

我正在使用 HSQLDB 2.2.9 中的 GUI (hsqldb.jar) 创建数据库。我将所有 SQL 命令放在一个单独的文本文件中。因此,要创建数据库,我只需将文本复制并粘贴到 HSQLDB 编辑器中,然后单击“执行 SQL”按钮。我已经成功地创建了不同版本的数据库多次,每次执行CREATE TABLE命令时只需按一下“执行 SQL”按钮,INSERT INTO然后再按一下“执行 SQL”按钮即可。CREATE这可行,但同时执行 the和INSERT命令会更方便。我试图将它们组合成一个“执行 SQL”,但我不断收到此错误:

user lacks privilege or object not found: SHOP / Error Code: -5501 / State: 42501

这是我尝试过的:

CREATE TABLE Shop (
    Id int NOT NULL IDENTITY, 
    Name varchar(255) NOT NULL, 
    UNIQUE (Name)
)

INSERT INTO Shop VALUES (
    NULL, 
    'Test Shop'
)

请注意,如果我在两个单独的步骤中执行 SQL,则此完全相同的代码将起作用。我试过在命令和命令COMMIT之间加上,但这些都没有解决问题。我也尝试在顶部添加,但这也没有解决它。CREATEINSERTCHECKPOINTSET WRITE_DELAY FALSE

我需要在此代码中添加什么才能使其一步到位?谢谢!

4

1 回答 1

2

这是不可能的。

GUI 客户端将窗口中的所有文本发送到数据库引擎。引擎在执行它们之前编译所有语句。因此,如果一个语句依赖于前一个语句的完成,它将无法编译。

从脚本填充数据库的更好方法是 SqlFile 工具,它是 SqlTool.jar 的一部分。该工具会一一执行语句。

单独的指南在这里:

http://hsqldb.org/doc/2.0/util-guide/sqltool-chapt.html

于 2013-05-15T11:55:02.013 回答