Как запустить базу данных H2 в режиме сервера?

как запустить базу данных H2 в режиме сервера. Мне нужно начать с моего заявления.Я попробовал следующий код:

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

вот свойства для соединения:

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 =

когда я запускаю программу, я получаю следующую ошибку:

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)

спасибо,

4 ответов


Как говорится в сообщении об исключении, "база данных может уже использоваться". Вам нужно закрыть все другие соединения, чтобы убедиться, что база данных не открыта в другом процессе одновременно.

кстати, не используйте AUTO_SERVER=TRUE и режим сервера в то же время. См. документацию для автоматический смешанный режим. Используйте любой из них.

Я думаю, вы немного смущены различными режимами подключения. Я советую прочитать документация о режимах подключения, чтобы убедиться, что вы понимаете это.


из командной строки

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

это запустит базу данных h2 в режиме сервера:

сервер веб-консоли работает на http://A.B.C.D:8082 (другие пользователи могут подключаться) Не удалось запустить браузер, чтобы открыть URL http://A.B.C.D:8082: браузер ошибка обнаружения и системное свойство h2.браузер не устанавливает TCP-сервер работает на tcp: / / A. B. C. D:9092 (другие могут подключаться) сервер PG работает на ПГ://А. В. С. Д:5435 (только местные соединения)

откройте браузер, чтобы иметь графический интерфейс администратора


вы можете использовать следующий код для запуска 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>

вы можете использовать клиент SQL SQuirrel (http://squirrel-sql.sourceforge.net/) для подключения к базе данных H2 и просмотра таблиц.

  1. создать новое подключение.
  2. выберите H2 в раскрывающемся меню драйвера
  3. установить ссылку на ваш проект целевую папку папку Н2 (с JDBC:Н2:с:\проекты\рабочее место\TestProject\целевой/Н2/ПС;AUTO_SERVER правда=)
  4. Enter имя пользователя ("СА")
  5. введите пароль ("")

закройте все приложения, использующие H2 (веб-консоль и т. д) Затем добавьте AUTO_SERVER=TRUE в конец местоположения в консоли h2, а также в java-программе (что вы уже сделали)