web-dev-qa-db-ja.com

H2コンソールは、JAVA

http://www.h2database.com/html/download.html からH2コンソールをダウンロードしました
そして私は自分のjdbc.propertiesファイル
jdbc:h2:c:/data/Messaging

ファイルに同じURLを使用してデータベースに接続していますが、テーブルが表示されません。情報スキーマのみを表示でき、select * from tablesその中には、テーブルも表示されません。

誰かが何が間違っているのか考えていますか?

20
Dunken

トリッキーなことの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>
20
MattC

あなたの質問に基づいて、あなたがこの特定の落とし穴の犠牲になったようではありませんが、このスレッドは私が問題を突き止めるのを助けてしまったので、同じ問題を持つ他の人を助けることができるので、後世のためにここに解決策を記録しています。

また、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コンソールからファイルを開くことができました。

10
Dan Barowy

同じ問題があった。

これは私のためにそれを解決しました: なぜ私の埋め込みh2プログラムが.mv.dbファイルに書き込んでいるのですか

追加したばかり;MV_STORE=FALSEおよび;MVCC=FALSEをjdbc urlに追加すると、すべてが正常に機能しました。

9
Framus

これは、h2モジュールを使用してメモリ有効化データベースを有効にする方法です。次のことを確認する必要があります

  1. @Entityアノテーションを持つクラスがありました。
  2. application.propertiesファイルspring.h2.console.enabled=trueで以下を有効にする必要があります
  3. Spring Bootを実行し、次のURLを入力しますlocalhost:8080/h2-console
  4. 接続画面が表示されます。 JDBC URL:-> jdbc:h2:mem:testdbに次の変更を入力します5.接続ボタンを押します

サラム

7
HA S

以下を使用したところ、テーブルが作成されました。


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
2
Krishnendu

H2コンソールとJavaコードの間で同じバージョンを使用することにより、この問題を回避することもできます。

これが私がこの同じ問題を解決した方法です here

0
Stephan

メインクラスにアノテーション@EntityScan( "packageName")を追加します

0
VRadhe