我正在使用HSQLDB 2.2.9中的GUI(hsqldb.jar)来创建数据库。我将所有SQL命令放在一个单独的文本文件中。因此,要创建数据库,我只需将文本复制并粘贴到HSQLDB编辑器中,然后单击“执行SQL”按钮。我已经多次使用不同的修订版成功创建了我的数据库,每次执行CREATE TABLE
命令时只需按一下“执行SQL”按钮,然后执行INSERT INTO
命令,然后按“执行SQL” “按钮。这样可行,但同时执行CREATE
和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
和CREATE
命令以及INSERT
之间添加CHECKPOINT
,但这些都没有解决问题。我也尝试在顶部添加SET WRITE_DELAY FALSE
,但这也没有解决它。
我需要在此代码中添加什么才能让它一步到位?谢谢!
答案 0 :(得分:2)
这是不可能的。
GUI客户端将窗口中的所有文本发送到数据库引擎。引擎在执行之前编译所有语句。因此,如果一个语句依赖于前一个语句的完成,它就不会编译。
从脚本填充数据库的更好方法是SqlFile工具,它是SqlTool.jar的一部分。该工具逐个执行语句。
单独的指南在这里: