在 Java 中的 Ubuntu 上查询 HSQLDB 数据库

Querying a HSQLDB database on Ubuntu in Java

此代码:

    c = DriverManager.getConnection("jdbc:hsqldb:file:company"); // jdbc:hsqldb:mem:company
    String query = "CREATE TABLE IF NOT EXISTS PUBLIC.USERS5 (name CHAR(25), age INTEGER NOT NULL);";
    stmt = c.createStatement();
    stmt.executeQuery(query);
    query = "INSERT INTO USERS5 (name, age) VALUES ('Erich Fried', 7)";
    rs = stmt.executeQuery(query);
    rs.close();

产生此错误:

Exception in thread "main" java.sql.SQLSyntaxErrorException: 
user lacks privilege or object not found: USER

我将配置更改为 嵌入式

路径

/home/x/Downloads/sb/SpringBootApp/src

IDEA 给了我这个 URL:

jdbc:hsqldb:文件:/home/x/Downloads/sb/SpringBootApp/src/公司

之后出现此错误:

Exception in thread "main" java.sql.SQLException: 
Database lock acquisition failure:
lockFile: org.hsqldb.persist.LockFile@4194dc76[
file=
/home/x/Downloads/sb/SpringBootApp/src/company.lck, exists=true, locked=false, valid=false, ] method: checkHeartbeat read: 2021-03-05 09:55:57 heartbeat - read: -8041 ms.

所以我删除了:

/home/x/Downloads/sb/SpringBootApp/src/company.lck

现在我收到此错误(完整错误:https://gist.github.com/sl5net/062bd41e7d6beb5a608bff4a83d605bb):

Exception in thread "main" java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: USER

与此同时,我尝试了其他连接类型(所有 = Embedded、InMemory、UrlOnly)并出现错误。

我还能做什么?

从堆栈跟踪看来,在您的真实 SELECT 语句中,您将 table 称为 USER 而不是 USERSS

关于“数据库锁获取失败”:您有两个 Java 进程访问同一个嵌入式文件:数据库。第二个进程失败并显示此消息。