サーバーモードで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)
おかげで、
例外メッセージにあるように、「データベースはすでに使用されている可能性があります」。データベースが別のプロセスで同時に開かれていないことを確認するために、他のすべての接続を閉じる必要があります。
ちなみに、AUTO_SERVER = TRUEとサーバーモードを同時に使用しないでください。 自動混合モード のドキュメントを参照してください。どちらかを使用してください。
さまざまな接続モードについて少し混乱していると思います。 接続モードに関するドキュメント を読んで、それを確実に理解することをお勧めします。
コマンドラインから、
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を表示します
次のコードを使用して、サーバーモードで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を使用するすべてのアプリケーション(Webコンソールなど)を閉じてから、AUTO_SERVER = TRUEをh2コンソールの場所の最後に追加し、Javaプログラム(すでに実行済み)
H2を起動しようとすると、このエラーが発生しました。
次も参照してください http://h2database.com/javadoc/org/h2/tools/Server.html
スレッド "main" org.h2.jdbc.JdbcSQLExceptionの例外:サポートされていない機能: "-〜webAllowOthers" [50100-197]
だから私はこれらの手順に従った:
Java -cp bin/h2-1.4.197.jar org.h2.tools.Server -web -webAllowOthers -tcp -tcpAllowOthers -baseDir /home/manoj/dev/h2/h2db_6.0
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/ &