我有以下问题: 两个不同系统上的两个应用程序实例应共享一个小型数据库。 主要问题是两个系统只能通过网络文件夹交换数据。 我无法在某处设置数据库服务器。
是否可以在网络文件夹上放置H2数据库并让两个实例连接到数据库(也同时)?
如果我禁用文件锁定,我可以使用嵌入模式将这两个实例连接到数据库,对吗? 实例可以在db上执行READ或INSERT操作。使用多个并发嵌入式连接是否可能导致数据损坏?
答案 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)
也可以在没有文件锁定的情况下打开数据库;在这 case由应用程序来保护数据库文件。 如果不这样做,将导致数据库损坏。
我认为如果您的应用程序始终使用相同的配置(网络文件夹上的共享文件数据库),则需要创建一个管理并发的应用程序层