【发布时间】:2014-01-17 13:13:42
【问题描述】:
我有两个客户端分别连接到同一个 H2 数据库。我希望这些连接之一是只读的,一个是读写的。为此,我使用以下连接字符串:
只读:
jdbc:h2:tcp://localhost/~/test;ACCESS_MODE_DATA=r读写:
jdbc:h2:tcp://localhost/~/test;ACCESS_MODE_DATA=rw
我的问题是访问模式似乎是数据库的属性而不是连接。所以当两个客户端同时在使用时,第一个连接的客户端会覆盖后续连接的访问方式。如果读写客户端在已经有来自只读客户端的连接时连接,则不能对数据库进行任何更改。反之亦然,如果读写客户端是第一个,则两个客户端都可以进行更改。访问模式似乎只有在没有现有连接时才会改变。
有什么办法可以解决这个问题吗?具有允许他们更改数据库的凭据的用户应该能够在一个客户端中执行此操作,但不能在另一个客户端中执行此操作,因此我无法简单地通过向不同用户授予不同权限来控制这一点。
【问题讨论】:
-
我不明白,为什么不能使用只读用户?
-
@ThomasMueller 因为我希望一个人能够在两个客户端上使用相同的用户凭据,但只有在连接只读客户端时才会受到限制。
-
你为什么要这么做?