【问题标题】:HSQL Connection Error. Any insight?HSQL 连接错误。有什么见解吗?
【发布时间】:2014-08-19 00:31:36
【问题描述】:

我正在尝试使用 java 连接到 HSQL。我正在使用教程来使用 JDBC 和休眠。这是lynda教程。无论如何,这是下面的代码:

package com.lynda.javatraining.db;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class Main {

    private static final String USERNAME = "dbuser";
    private static final String PASSWORD = "dbpassword";
    private static final String CONN_STRING =
            "jdbc:hsqldb://data/explorecalifornia";

    public static void main(String[] args) throws SQLException {

        //Class.forName("com.mysql.jdbc.Driver");

        Connection conn = null;
        System.out.println("A");
        System.out.println(conn == null);
        System.out.println(CONN_STRING);
        try {
            System.out.println("B1");
            conn = DriverManager.getConnection(CONN_STRING, USERNAME, PASSWORD);
            System.out.println("B1-2");
            System.out.println("Connected!");
        } catch (SQLException e) {
            System.out.println("B2");
            System.err.println(e);
        } finally {
            System.out.println("B3");
            if (conn != null) {
                conn.close();
            }
        }
        System.out.println("C");

    }

}

这是我得到的错误:

A
true
jdbc:hsqldb://data/explorecalifornia
B1
2014-06-27T15:26:27.430-0400  SEVERE  could not reopen database
org.hsqldb.HsqlException: Database lock acquisition failure: lockFile: org.hsqldb.persist.LockFile@76d682a[file =/data/explorecalifornia.lck, exists=false, locked=false, valid=false, ] method: openRAF reason: java.io.FileNotFoundException: /data/explorecalifornia.lck (No such file or directory)
    at org.hsqldb.error.Error.error(Unknown Source)
    at org.hsqldb.error.Error.error(Unknown Source)
    at org.hsqldb.persist.LockFile.newLockFileLock(Unknown Source)
    at org.hsqldb.persist.Logger.acquireLock(Unknown Source)
    at org.hsqldb.persist.Logger.openPersistence(Unknown Source)
    at org.hsqldb.Database.reopen(Unknown Source)
    at org.hsqldb.Database.open(Unknown Source)
    at org.hsqldb.DatabaseManager.getDatabase(Unknown Source)
    at org.hsqldb.DatabaseManager.newSession(Unknown Source)
    at org.hsqldb.jdbc.JDBCConnection.<init>(Unknown Source)
    at org.hsqldb.jdbc.JDBCDriver.getConnection(Unknown Source)
    at org.hsqldb.jdbc.JDBCDriver.connect(Unknown Source)
    at java.sql.DriverManager.getConnection(DriverManager.java:571)
    at java.sql.DriverManager.getConnection(DriverManager.java:215)
    at com.lynda.javatraining.db.Main.main(Main.java:24)

B2
java.sql.SQLException: Database lock acquisition failure: lockFile: org.hsqldb.persist.LockFile@76d682a[file =/data/explorecalifornia.lck, exists=false, locked=false, valid=false, ] method: openRAF reason: java.io.FileNotFoundException: /data/explorecalifornia.lck (No such file or directory)
B3
C

谁能告诉我我做错了什么?谢谢。

【问题讨论】:

  • 您的系统上是否存在 /data?如果是的话,你有这个目录的写权限吗?
  • /数据确实存在。它在eclipse项目中创建了文件夹。
  • 您发布的异常显示它在 /data 中查找(即绝对路径和 not 相对路径,例如 {path-to-your-eclipse-project}/data) .也许试试 jdbc:hsqldb:file://etc more here.
  • 有趣。如果我确实使用绝对路径,它会很好,尽管相对路径似乎不起作用。
  • 所以我想我现在才明白。如果我删除数据之前的“//”,则相对路径现在有效。我知道这一定很简单。感谢大家的帮助。

标签: java hibernate jdbc hsqldb


【解决方案1】:

数据库具有阻​​止通信的锁定文件explorecalifornia.lck。您应该删除锁定文件并重新启动数据库。当您意外关闭数据库或系统时,可能会不时发生这种情况。

查看命令行中用于调用shutdown 的命令的语法。还有一个选项how to shutdown server in Java

【讨论】:

  • 我只显示两个文件,.properties 和 .script 文件,名称为 explorecalifornia。 .lck 文件在哪里?感谢您的帮助,我很感激。
猜你喜欢
  • 2016-01-28
  • 2011-09-19
  • 2012-06-11
  • 1970-01-01
  • 2020-06-12
  • 1970-01-01
  • 1970-01-01
  • 2022-10-23
  • 1970-01-01
相关资源
最近更新 更多