http://www.h2database.com/html/download.html からH2コンソールをダウンロードしました
そして私は自分のjdbc.properties
ファイル
〜jdbc:h2:c:/data/Messaging
。
ファイルに同じURLを使用してデータベースに接続していますが、テーブルが表示されません。情報スキーマのみを表示でき、select * from tables
その中には、テーブルも表示されません。
誰かが何が間違っているのか考えていますか?
トリッキーなことの1つは、存在しないJDBC URLに接続しようとしても、H2コンソールでエラーが発生しないことです。代わりに、そのURLに新しいデータベースを作成します。インメモリDBに接続するには、次のJDBC URLを使用します( http:// localhost:8080/h2-console がデフォルトのコンソールです):
jdbc:h2:mem:testdb
Jdbc:h2:〜/ testのようなものを入力すると、test.mvファイルがホームディレクトリの下に作成されます。ただし、アプリケーションは引き続きメモリ内データベースを使用します。
コンソールは、pomにh2依存関係があり、Spring Developer Tools依存関係もある場合に使用できます。 tools依存関係がない場合は、h2依存関係を持ち、application.propertiesファイルに次の行を追加することで確認できます。
spring.h2.console.enabled=true #not needed if you have spring-boot-devtools dependency
Dbをメモリではなくファイルとして使用する場合は、applications.propertiesに以下を追加します。
spring.datasource.url=jdbc:h2:~/test_db #You will see the file in your home directory.
H2は永続化されたデータ用ではありませんが、テスト目的で永続化する場合は、以下を追加します。
spring.jpa.hibernate.ddl-auto = update
次にアプリを起動し、コンソールで次のJDBC URLを使用します。
jdbc:h2:~/test_db
ご参考までに、application.propertiesには(データベースファイル用に)1つのエントリしかありません。依存関係は次のとおりです。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
</dependency>
あなたの質問に基づいて、あなたがこの特定の落とし穴の犠牲になったようではありませんが、このスレッドは私が問題を突き止めるのを助けてしまったので、同じ問題を持つ他の人を助けることができるので、後世のためにここに解決策を記録しています。
また、H2コンソールでデータベースを開こうとすると、空のH2データベース(基本的には、INFORMATION_SCHEMAテーブルのみ)のように見えるものが表示されました。 DBの名前が正しい(mydb.mv.db
)であることを再確認したところ、H2コンソールが2番目のデータベースファイルmydb.mv.db.mv.db
を作成したことがわかりました。奇数。
H2コンソールは、ファイル名からサフィックス.mv.db
を省略することを期待していることがわかります。持っていなかったので、mydb.mv.db.mv.db
を探していました。 JDBC文字列をjdbc:h2:mydb
に変更すると問題が解決し、H2コンソールからファイルを開くことができました。
同じ問題があった。
これは私のためにそれを解決しました: なぜ私の埋め込みh2プログラムが.mv.dbファイルに書き込んでいるのですか
追加したばかり;MV_STORE=FALSE
および;MVCC=FALSE
をjdbc urlに追加すると、すべてが正常に機能しました。
これは、h2モジュールを使用してメモリ有効化データベースを有効にする方法です。次のことを確認する必要があります
spring.h2.console.enabled=true
で以下を有効にする必要がありますlocalhost:8080/h2-console
JDBC URL:
-> jdbc:h2:mem:testdb
に次の変更を入力します5.接続ボタンを押しますサラム
以下を使用したところ、テーブルが作成されました。
spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_ON_EXIT=FALSE
spring.h2.console.enabled=true
spring.h2.console.path=/h2console
spring.datasource.username=sa
spring.datasource.password=
spring.datasource.driverClassName=org.h2.Driver
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect
H2コンソールとJavaコードの間で同じバージョンを使用することにより、この問題を回避することもできます。
これが私がこの同じ問題を解決した方法です here 。
メインクラスにアノテーション@EntityScan( "packageName")を追加します