多个H2数据库连接,不同的访问模式 [英] Multiple H2 database connections, different access modes

查看:18
本文介绍了多个H2数据库连接,不同的访问模式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有两个客户端分别连接到同一个H2数据库。我希望其中一个连接是只读的,另一个是读写的。为此,我使用以下连接字符串:

  • 只读:jdbc:h2:tcp://localhost/~/test;ACCESS_MODE_DATA=r

  • 读写:jdbc:h2:tcp://localhost/~/test;ACCESS_MODE_DATA=rw

我的问题是访问模式似乎是数据库的属性,而不是连接的属性。因此,当两个客户端同时使用时,进行第一个连接的客户端将覆盖后续连接的访问模式。如果读写客户端在已有来自只读客户端的连接时进行连接,则不能对数据库进行任何更改。反之亦然,如果读写客户端是第一个,则两个客户端都可以进行更改。访问模式似乎只有在没有现有连接时才会更改。

我有什么办法可以解决这个问题吗?具有允许他们更改数据库的凭据的用户应该能够在一个客户端中执行此操作,但不能在另一个客户端中执行此操作,因此我无法简单地通过向不同用户授予不同的权限来控制这一点。

推荐答案

您可以使用不同的用户。一个用户‘ReadOnly’:

create table test(id int);
create user readOnly password '';
grant select on test to readOnly;
如果要使用只读模式,请使用ReadOnly用户。如果要写入,请使用admin用户。

这篇关于多个H2数据库连接,不同的访问模式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆