首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在服务器模式下运行H2数据库?

如何在服务器模式下运行H2数据库?
EN

Stack Overflow用户
提问于 2012-02-17 03:53:30
回答 3查看 119.9K关注 0票数 36

我需要从我的应用程序中以服务器模式启动H2数据库。我已经尝试过以下代码:

代码语言:javascript
复制
server = Server.createTcpServer().start();

以下是该连接的属性:

代码语言:javascript
复制
javabase.jdbc.url = jdbc:h2:tcp://localhost:9092/nio:~/source/db/database/db;AUTO_SERVER=TRUE
javabase.jdbc.driver = org.h2.Driver
javabase.jdbc.username = sa
javabase.jdbc.password =

当我运行这个程序时,我得到了以下错误:

代码语言:javascript
复制
client.db.exception.DAOException: org.h2.jdbc.JdbcSQLException: Database may be already in use: "Locked by another process". Possible solutions: close all other connection(s); use the server mode [90020-164]
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:329)
    at org.h2.message.DbException.get(DbException.java:169)
    at org.h2.message.DbException.get(DbException.java:146)
    at org.h2.store.FileLock.getExceptionAlreadyInUse(FileLock.java:439)
    at org.h2.store.FileLock.lockFile(FileLock.java:336)
    at org.h2.store.FileLock.lock(FileLock.java:128)
    at org.h2.engine.Database.open(Database.java:542)
    at org.h2.engine.Database.openDatabase(Database.java:222)
    at org.h2.engine.Database.<init>(Database.java:217)
    at org.h2.engine.Engine.openSession(Engine.java:56)
    at org.h2.engine.Engine.openSession(Engine.java:159)
    at org.h2.engine.Engine.createSessionAndValidate(Engine.java:138)
    at org.h2.engine.Engine.createSession(Engine.java:121)
    at org.h2.server.TcpServerThread.run(TcpServerThread.java:133)
    at java.lang.Thread.run(Thread.java:680)
EN

回答 3

Stack Overflow用户

发布于 2014-02-10 16:55:56

在命令行中,

代码语言:javascript
复制
java -jar h2-1.3.160.jar -webAllowOthers -tcpAllowOthers

这将在服务器模式下启动h2数据库:

代码语言:javascript
复制
Web Console server running at http://A.B.C.D:8082 (others can connect)
TCP server running at tcp://A.B.C.D:9092 (others can connect)
PG server running at pg://A.B.C.D:5435 (only local connections)

打开浏览器以获得管理员GUI

票数 25
EN

Stack Overflow用户

发布于 2017-05-05 14:39:34

关闭所有使用H2的应用程序(web控制台等),然后在h2控制台和java程序中将AUTO_SERVER=TRUE添加到该位置的末尾(您已经这样做了)

票数 2
EN

Stack Overflow用户

发布于 2021-06-21 12:53:35

还有一种方法。您可以定义@Configuration bean,例如:‘@Configuration公共类H2Configuration {

代码语言:javascript
复制
@Bean
public void startTCPServer(){
    try {
        Server h2Server = Server.createTcpServer().start();
        if (h2Server.isRunning(true)) {
            System.out.println(h2Server.getStatus());
        } else {
            throw new RuntimeException("Could not start H2 server.");
        }
    } catch (SQLException e) {
        throw new RuntimeException("Failed to start H2 server: ", e);
    }
}

}‘

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9318116

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档