How to run H2 database in server mode?

匿名 (未验证) 提交于 2019-12-03 01:45:01

问题:

How to start H2 database in server mode. I need to start it from my application.I tried the following code:

server = Server.createTcpServer().start(); 

Here is the properties for the connection:

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 = 

When I run the program I got the following error:

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.(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) 

Thanks,

回答1:

As the exception message says, "Database may be already in use". You need to close all other connection(s), to make sure the database is not open in another process concurrently.

By the way, don't use AUTO_SERVER=TRUE and the server mode at the same time. See the documentation for the automatic mixed mode. Use either one.

I guess you are a bit confused about the different connection modes. I suggest to read the documentation about the connection modes, to make sure you understand it.



回答2:

From command line,

java -jar h2-1.3.160.jar -webAllowOthers -tcpAllowOthers 

this will launch an h2 database in server mode:

Web Console server running at http://A.B.C.D:8082 (others can connect) Failed to start a browser to open the URL http://A.B.C.D:8082: Browser detection failed and system property h2.browser not set 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)

open a browser to have an admin GUI



回答3:

You can use the following code to run H2 in server mode.

You can use SQuirrel SQL client (http://squirrel-sql.sourceforge.net/) to connect to you H2 database and look at the tables.

  1. Create new connection.
  2. Select H2 in the driver dropdown menu
  3. Set url to your project target folder h2 folder (jdbc:h2:C:\projects\workspace\TestProject\target/h2/ps;AUTO_SERVER=true)
  4. Enter user name ("sa")
  5. Enter password ("")


回答4:

Close all the applications that using H2 (web console, etc) Then add the AUTO_SERVER=TRUE to the end of the location in h2 console and also in java program (which you already have done)



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!