使用 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 数据库的主要内容,如果未能解决你的问题,请参考以下文章