Как запустить базу данных 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 и просмотра таблиц.
- создать новое подключение.
- выберите H2 в раскрывающемся меню драйвера
- установить ссылку на ваш проект целевую папку папку Н2 (с JDBC:Н2:с:\проекты\рабочее место\TestProject\целевой/Н2/ПС;AUTO_SERVER правда=)
- Enter имя пользователя ("СА")
- введите пароль ("")
закройте все приложения, использующие H2 (веб-консоль и т. д) Затем добавьте AUTO_SERVER=TRUE в конец местоположения в консоли h2, а также в java-программе (что вы уже сделали)