JDBCを使用し、SQLスクリプトからusaDBというh2データベースを作成しました。次に、すべてのテーブルにjdbcを入力しました。
問題は、localhost:8082でusaDBに接続した後、左側のツリーにテーブルが表示されないことです。 INFORMATION_SCHEMAデータベースと、usaDBの作成を指定したrootUser
のみがあります。
H2データベース内のテーブルのコンテンツを表示する方法は?
クエリSELECT * FROM INFORMATION_SCHEMA.TABLES
。
しかし、私が作成したもの以外の多くのテーブル名を返しました。私のスナップショット:
私は同じ問題を抱えていて、答えは本当に愚かなようです:データベース名を入力するとき、「。h2.db」接尾辞を追加しないでください、たとえば、dbファイルがある場合は「- D:\ somebase.h2.db "接続文字列は" jdbc:h2:file:/ D:/ somebase "のようになります。別の方法では、jdbcは「somebase.h2.db.h2.db」という名前の新しい空のデータベースファイルを作成し、システムテーブルのみが表示されます。
この問題は私をひねりに駆り立て、このページのほかに、私はそれを解決するまで多くの(多くの!)他のものを読みました。
私のユースケースは、 :: Spring Boot ::(v1.3.1.RELEASE)を使用してSTSで作成されたSpringBatchプロジェクトがH2でどのように動作するかを確認することでしたデータベース;後者を行うには、H2コンソールを実行し、バッチ実行のDB結果を照会できる必要がありました。
これは私がやったことであり、発見したものです:
Spring Bootを使用してSTSでWebプロジェクトを作成しました:
ここで、次のようにSTSでSpringBatchプロジェクトを作成します(代替方法は、データを永続化するためのクラスのほとんどが欠けている別のテンプレートを作成します。この方法は、2つのプロジェクトを作成します:1つ Complete initial 。 Complete を以下で使用します。):
私はまさにこの問題に出会いました。
あなたが説明したことから、jdbcを「実際の」h2サーバーに接続していると思いますが、間違ったモード(埋め込みメモリモード、別名h2mem
)。つまり、h2は、他の場所に保存されている真のデータベースを使用する代わりに、メモリ内に新しいデータベースを作成します。
このデータベースに接続するときは、モードGeneric H2(Server)、NOTGeneric H2(Embedded)を使用してください。下の写真を参照してください。
Jarファイルとインストールされたh2データベースのバージョンは同じである必要があります。
私の場合、この問題はJavaでh2ユーザー名、パスワードを設定しなかったことが原因でした。残念ながら、Springはエラーを表示しませんでしたので、理解するのは簡単ではありませんでした。この行をdataSourceメソッドに追加すると、問題を解決するのに役立ちました。
dataSource.setUsername("sa");
dataSource.setPassword("");
また、schema.sqlでテーブルを作成するときにスキーマを指定する必要がありました。
スプリングブートでmaven依存関係を使用してH2データベーステーブルを作成および設定した場合、JDBC URLをjdbc:h2:mem:testdb
Webコンソールを使用してH2に接続中。
Generic H2(サーバー)を選択すると解決しました。デフォルトのGeneric H2(Embedded)を使用したいと思いましたが、これは間違っています。