Подтвердить что ты не робот

Как запустить базу данных 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)

Спасибо,

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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

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

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)

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

Ответ 3

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

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

  • Создать новое соединение.
  • Выберите H2 в раскрывающемся меню драйвера
  • Установить url в папку назначения целевой папки h2 (jdbc: h2: C:\projects\workspace\TestProject\target/h2/ps; AUTO_SERVER = true)
  • Введите имя пользователя ( "sa" )
  • Введите пароль ("")

Ответ 4

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

Ответ 5

Я получал эту ошибку при попытке запустить H2.
Смотрите также http://h2database.com/javadoc/org/h2/tools/Server.html

Исключение в потоке "main" org.h2.jdbc.JdbcSQLException: функция не поддерживается: "- ~ webAllowOthers" [50100-197]

Итак, я следовал за этими шагами:

  1. make dir mkdir h2db в этом каталоге будут ваши db файлы.
  2. Нажмите эту команду: java -cp bin/h2-1.4.197.jar org.h2.tools.Server -web -webAllowOthers -tcp -tcpAllowOthers -baseDir/home/manoj/dev/h2/h2db_6.0
    эта команда запустит h2
  3. Если вы хотите запустить h2 в бэкэнде, откройте vi h2.sh и вставьте эту команду следующим образом: nohup java -cp bin/h2-1.4.197.jar org.h2.tools.Server -web -webAllowOthers -tcp -tcpAllowOthers -baseDir/home/manoj/dev/h2/h2db_6.0/&
  4. Теперь запустите. /bin.h2.sh.