我试图连接到hsql数据库.我通过从C:\ myhsql运行创建了一个:
java -cp .;C:\hsql\lib\hsqldb.jar org.hsqldb.Server -database.0 file:db\mydb -dbname.0 MYDB
Run Code Online (Sandbox Code Playgroud)
这mydb在一个名为的目录中创建db.此文件夹现在具有.lck,tmp,脚本,名称为mydb的属性文件以及当前文件夹中名为MYDB的类似文件.
在java代码我试过
Class.forName("org.hsqldb.jdbcDriver");
connection = DriverManager.getConnection("jdbc:hsqldb:file:db/sjdb", "SA", "");
Run Code Online (Sandbox Code Playgroud)
当我运行该程序时,我收到此错误:
java.sql.SQLException: Database lock acquisition failure: lockFile: org.hsqldb.persist.LockFile@f3811c1a[file =C:\myhsql\db\mydb.lc
k, exists=true, locked=false, valid=false, ] method: checkHeartbeat read: 2010-10-19 12:46:09 heartbeat - read: -6750 ms.
...
Run Code Online (Sandbox Code Playgroud)
这是堆栈跟踪:
java.sql.SQLException: Database lock acquisition failure: lockFile: org.hsqldb.persist.LockFile@f3811c1a[file =C:\myhsql\db\sjdb.lc
k, exists=true, locked=false, valid=false, ] method: checkHeartbeat read: 2010-10-19 12:46:09 heartbeat - read: -6750 ms.
at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
at org.hsqldb.jdbc.Util.sqlException(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(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at ConnectHSQLDB.main(ConnectHSQLDB.java:20)
Caused by: org.hsqldb.HsqlException: Database lock acquisition failure: lockFile: org.hsqldb.persist.LockFile@f3811c1a[file =C:\myhsql\db\sjdb.lck, exists=true, locked=false, valid=false, ] method: checkHeartbeat read: 2010-10-19 12:46:09 heartbeat - read: -6750 ms.
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)
... 6 more
java.lang.NullPointerException
at ConnectHSQLDB.main(ConnectHSQLDB.java:32)
Run Code Online (Sandbox Code Playgroud)
有人能告诉我我做错了什么吗?我可以连接到使用SwingDBManager并能分贝insert,delete以及select在数据库记录.我在尝试java代码时没有运行DBManager.锁定问题仍然存在.
fre*_*edt 19
第一个命令启动服务器.此服务器锁定数据库文件,以便"其他人"无法修改它们.您应该使用"-dbname.0 mydb"而不是"MYDB",因为它应该是小写的.
您连接到数据库的Java连接URL是错误的.您应该使用"jdbc:hsqldb:hsql:// localhost/mydb"作为连接字符串.虽然数据库文件被服务器锁定,但您可以访问数据库服务器,但无法使用file:URL"进程内"访问数据库.
Bas*_*ANI 15
我面临这个错误是因为我想在另一个客户端中查看当前打开的数据库,就像IntelliJ database服务器使用相同的数据库一样
所以要使 hsql db 能够连接到多个客户端,请使用
hsqldb.lock_file=false
Run Code Online (Sandbox Code Playgroud)
所以连接网址会像
jdbc:hsqldb:file:./db/myDbInFile;hsqldb.lock_file=false
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
51419 次 |
| 最近记录: |