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