未找到使用脚本创建表和插入数据的HSQLDB表

时间:2013-05-15 10:43:36

标签: sql hsqldb

我正在使用HSQLDB 2.2.9中的GUI(hsqldb.jar)来创建数据库。我将所有SQL命令放在一个单独的文本文件中。因此,要创建数据库,我只需将文本复制并粘贴到HSQLDB编辑器中,然后单击“执行SQL”按钮。我已经多次使用不同的修订版成功创建了我的数据库,每次执行CREATE TABLE命令时只需按一下“执行SQL”按钮,然后执行INSERT INTO命令,然后按“执行SQL” “按钮。这样可行,但同时执行CREATEINSERT命令会更方便。我试图将这些组合成一个“执行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,则完全相同的代码可以正常工作。我尝试在COMMITCREATE命令以及INSERT之间添加CHECKPOINT,但这些都没有解决问题。我也尝试在顶部添加SET WRITE_DELAY FALSE,但这也没有解决它。

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

1 个答案:

答案 0 :(得分:2)

这是不可能的。

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

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

单独的指南在这里:

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