H2数据库多个连接

时间:2012-09-13 08:08:26

标签: h2

我有以下问题: 两个不同系统上的两个应用程序实例应共享一个小型数据库。 主要问题是两个系统只能通过网络文件夹交换数据。 我无法在某处设置数据库服务器。

是否可以在网络文件夹上放置H2数据库并让两个实例连接到数据库(也同时)?

如果我禁用文件锁定,我可以使用嵌入模式将这两个实例连接到数据库,对吗? 实例可以在db上执行READ或INSERT操作。使用多个并发嵌入式连接是否可能导致数据损坏?

2 个答案:

答案 0 :(得分:29)

我遇到了同样的问题,我在文档中找到了解决方案。它可以在; http://h2database.com/html/features.html#auto_mixed_mode

  

多个进程可以访问同一个数据库,而无需手动启动服务器。为此,请将AUTO_SERVER = TRUE附加到数据库URL。您可以使用相同的数据库URL,而不管数据库是否已打开。此功能不适用于内存数据库。

// Application 1:
DriverManager.getConnection("jdbc:h2:/data/test;AUTO_SERVER=TRUE");

// Application 2:
DriverManager.getConnection("jdbc:h2:/data/test;AUTO_SERVER=TRUE");

答案 1 :(得分:2)

From H2 documentation

  

也可以在没有文件锁定的情况下打开数据库;在这   case由应用程序来保护数据库文件。   如果不这样做,将导致数据库损坏。

我认为如果您的应用程序始终使用相同的配置(网络文件夹上的共享文件数据库),则需要创建一个管理并发的应用程序层