2012-03-25 69 views
1

我的要求是多个客户端需要连接到本地HyperSQL 2.2.8并写入。 还会有一个单独的客户端用于在同一台机器上查看。 因此,多个写客户端和一个阅读器客户端需要连接到本地HyperSQL 2.2.8。 我使用hibernate从本地HyperSQL 2.2.8读取和写入。多个客户端需要连接到本地HyperSQL 2.2.8并写入hsqldb

我跑hsldb像这样 java命令../lib/hsqldb.jar org.hsqldb.server.Server --database.0文件服务器:MYDB --dbname.0 XDB

我的问题是第一个客户端在连接时持有锁。 其他客户端无法写入。

感谢解决此问题的任何帮助。

感谢 巴拉

+0

听起来就像是第一客户端没有comitting的评论的变化 – 2012-03-25 15:24:04

回答

1

启动服务器后,您连接到它的URL jdbc:hsqldb:hsq://localhost/xdb。如果读者客户端执行长时间运行的查询,则应该使用MVCC或MVLOCKS事务模型创建数据库。请参阅指南:http://hsqldb.org/doc/2.0/guide/sessions-chapt.html#snc_tx_tx_cc

+0

Fredt您好,感谢。我没有连接jdbc:hsqldb:hsq:// localhost/xdb,第一个客户端成功。但是下一个客户端得到一个锁定的异常,我可以看到在文件系统上创建了一个lck文件。 – user558925 2012-03-25 19:22:11

+0

如果您只运行一次服务器,然后从所有客户端连接到服务器,它将起作用。锁定的异常是因为您正在使用jdbc:hsqldb:file:第二次连接 – fredt 2012-03-25 22:33:53

+0

您好,Fred,非常感谢 - 澄清了一些事情。非常感谢你的帮助。 – user558925 2012-03-26 01:01:56

0

您可以使用属性hsqldb.lock_file=false(默认为true

默认情况下,对于被打开,读取和写入的每个文件数据库中创建一个锁定文件。可以使用值false指定此属性,以防止创建锁定文件。不建议使用此用法,但在使用闪存类型存储时可能需要。该属性适用于现有文件:数据库以及新数据库。

请参阅http://hsqldb.org/doc/guide/dbproperties-chapt.html