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

Fer*_*deh 28 java database h2

如何在服务器模式下启动H2数据库.我需要从我的应用程序启动它.我尝试了以下代码:

server = Server.createTcpServer().start();
Run Code Online (Sandbox Code Playgroud)

以下是连接的属性:

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 =
Run Code Online (Sandbox Code Playgroud)

当我运行该程序时,我收到以下错误:

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)
Run Code Online (Sandbox Code Playgroud)

谢谢,

Tho*_*ler 26

正如异常消息所说,"数据库可能已在使用中".您需要关闭所有其他连接,以确保数据库不会同时在另一个进程中打开.

顺便说一句,不要同时使用AUTO_SERVER = TRUE 服务器模式.请参阅自动混合模式的文档.使用任何一个.

我猜你对不同的连接模式有点困惑.我建议阅读有关连接模式的文档,以确保您理解它.

  • @Thomas - 我已经扫描了很多帖子,我一直看到你说要查看文档.请不要这样做.文档,特别是关于startTcpServer的文档,充其量只是稀疏的.服务器启动,可以远程关闭,但它拒绝所有连接. (5认同)

ERN*_*RON 19

从命令行,

java -jar h2-1.3.160.jar -webAllowOthers -tcpAllowOthers
Run Code Online (Sandbox Code Playgroud)

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

Web控制台服务器运行在HTTP:// ABCD:8082(其他人可以连接)无法启动浏览器打开该URL 的http:// ABCD:8082:浏览器检测失败,系统属性h2.browser没有设置TCP服务器TCP在运行:// ABCD:9092(其他人可以连接)PG服务器运行在pg:// ABCD:5435(仅本地连接)

打开浏览器以拥有管理GUI


you*_*jad 12

您可以使用以下代码在服务器模式下运行H2.

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
    <property name="driverClassName" value="org.h2.Driver" />
    <property name="url" value="jdbc:h2:target/h2/ps;AUTO_SERVER=TRUE" />
    <property name="username" value="sa" />
    <property name="password" value="" />
</bean>
Run Code Online (Sandbox Code Playgroud)

您可以使用SQuirrel SQL客户端(http://squirrel-sql.sourceforge.net/)连接到H2数据库并查看表.

  1. 创建新连接.
  2. 在驱动程序下拉菜单中选择H2
  3. 将url设置为项目目标文件夹h2文件夹(jdbc:h2:C:\ projects\workspace\TestProject\target/h2/ps; AUTO_SERVER = true)
  4. 输入用户名("sa")
  5. 输入密码 ("")