web-dev-qa-db-ja.com

サーバーモードで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)

おかげで、

28
Feras Odeh

例外メッセージにあるように、「データベースはすでに使用されている可能性があります」。データベースが別のプロセスで同時に開かれていないことを確認するために、他のすべての接続を閉じる必要があります。

ちなみに、AUTO_SERVER = TRUEサーバーモードを同時に使用しないでください。 自動混合モード のドキュメントを参照してください。どちらかを使用してください。

さまざまな接続モードについて少し混乱していると思います。 接続モードに関するドキュメント を読んで、それを確実に理解することをお勧めします。

26
Thomas Mueller

コマンドラインから、

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)

ブラウザを開いて管理GUIを表示します

18

次のコードを使用して、サーバーモードで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データベースに接続し、テーブルを見ることができます。

  1. 新しい接続を作成します。
  2. ドライバーのドロップダウンメニューでH2を選択します
  3. プロジェクトターゲットフォルダーh2フォルダーにURLを設定します(jdbc:h2:C:\ projects\workspace\TestProject\target/h2/ps; AUTO_SERVER = true)
  4. ユーザー名を入力(「sa」)
  5. パスワードを入力する ("")
12
yousafsajjad

H2を使用するすべてのアプリケーション(Webコンソールなど)を閉じてから、AUTO_SERVER = TRUEをh2コンソールの場所の最後に追加し、Javaプログラム(すでに実行済み)

2
Nimesha Kalinga

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を実行します。
0