【问题标题】:How do I allow multiple users to connect to my H2 database simultaneously?如何允许多个用户同时连接到我的 H2 数据库?
【发布时间】:2014-12-31 20:46:07
【问题描述】:

我正在使用 H2 进行数据库管理,这就是我想做的:

我想允许多个用户同时访问一个数据库。我读过一些关于“MULTI_THREADED=TRUE”、“LOCK_FILE=NO”和“AUTO_SERVER=TRUE”的文章。我还读到“LOCK_FILE=NO”可能很危险,因为它会破坏数据库。我绝对不想要这个,所以我假设这是一个糟糕的方法。我还尝试在访问记录后立即关闭连接,无论是读取还是写入。到目前为止,似乎没有任何效果。如果数据库已连接到应用程序的单独实例中(例如:在另一台计算机上),则应用程序不允许我读取或写入数据库。一旦我在一台计算机上完全关闭应用程序,我就可以访问数据库记录。

如何在不影响数据库安全的情况下,允许多个用户同时连接H2数据库?

【问题讨论】:

  • 有趣的是,你得到的第一个答案正是我一直在说的......
  • 不完全是。您的回答都不是非常直接或有帮助的。
  • 所以“使用服务器模式”没有帮助......耻辱
  • 好的,我认为单独使用“AUTO_SERVER=TRUE”不能解决问题。仅此一项就可以解决问题吗?现在,我将其设置为在进行查询后立即提交并关闭连接,因此锁定文件被创建然后删除。这是允许多个用户访问数据库的有效方式吗?

标签: java sql database h2


【解决方案1】:

AUTO_SERVER=TRUE 允许多连接模式。

【讨论】:

    【解决方案2】:

    看起来您在嵌入式模式下使用 H2,一次只允许一个数据库连接。有关详细信息,请参阅文档中的connection modes

    如果您需要支持多个连接,包括来自多个应用程序实例,那么您需要在 server mode 中启动 H2,并为此模式使用适当的 connection URLs

    【讨论】:

    • 那么,有没有办法使用“AUTO_SERVER=TRUE”来做到这一点?这样会不会混在一起?
    • 而且,如果我将自动服务器设为 true,是否允许多个连接?
    • automatic mixed mode(即 AUTO_SERVER=TRUE)允许多个并发连接到数据库。但是,我不建议这样做,因为第一个连接启动服务器以及该连接关闭时的限制,服务器也是如此,因此所有远程连接都关闭,待处理的事务将被回滚。
    • 文档指出,在嵌入式模式下,打开的连接数没有限制。
    • @StefanNeuhaus 但不是多个用户
    猜你喜欢
    • 1970-01-01
    • 2012-09-06
    • 2021-03-26
    • 1970-01-01
    • 1970-01-01
    • 2015-05-10
    • 1970-01-01
    • 1970-01-01
    • 2020-10-07
    相关资源
    最近更新 更多