使用 Java 在 Ubuntu 上查询 HSQLDB 数据库

Posted

技术标签:

【中文标题】使用 Java 在 Ubuntu 上查询 HSQLDB 数据库【英文标题】:Querying a HSQLDB database on Ubuntu in Java 【发布时间】:2021-03-05 10:15:56 【问题描述】:

这段代码:

    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

我将 in 配置更改为 Embedded

带路径

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

IDEA 给了我这个 URL:

jdbc:hsqldb:file:/home/x/Downloads/sb/SpringBootApp/src/company

后来出现这个错误:

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)并出现错误。

我还能做什么?

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

以上是关于使用 Java 在 Ubuntu 上查询 HSQLDB 数据库的主要内容,如果未能解决你的问题,请参考以下文章

如何在 hsql 中编写 postgresql 查询

HSQL 数据库:加载特定的 Java 类路径

HSQL 中的条件插入失败

将 DATE 函数与 HSQL 一起使用时出错

立即执行 hsqldb

在 oracle 和 HSQL 中工作的查询