web-dev-qa-db-ja.com

localhost:8082にあるh2データベースのすべてのテーブルを表示する方法

JDBCを使用し、SQLスクリプトからusaDBというh2データベースを作成しました。次に、すべてのテーブルにjdbcを入力しました。

問題は、localhost:8082でusaDBに接続した後、左側のツリーにテーブルが表示されないことです。 INFORMATION_SCHEMAデータベースと、usaDBの作成を指定したrootUserのみがあります。

H2データベース内のテーブルのコンテンツを表示する方法は?

クエリSELECT * FROM INFORMATION_SCHEMA.TABLES

しかし、私が作成したもの以外の多くのテーブル名を返しました。私のスナップショット:

enter image description here

30

私は同じ問題を抱えていて、答えは本当に愚かなようです:データベース名を入力するとき、「。h2.db」接尾辞を追加しないでください、たとえば、dbファイルがある場合は「- D:\ somebase.h2.db "接続文字列は" jdbc:h2:file:/ D:/ somebase "のようになります。別の方法では、jdbcは「somebase.h2.db.h2.db」という名前の新しい空のデータベースファイルを作成し、システムテーブルのみが表示されます。

42
Le_Enot

SHOW コマンドを使用できます。

grammar

このコマンドを使用すると、スキーマ、テーブル、またはテーブルの列を一覧表示できます。例えば。:

SHOW TABLES
19
Paul Vargas

この問題は私をひねりに駆り立て、このページのほかに、私はそれを解決するまで多くの(多くの!)他のものを読みました。
私のユースケースは、 :: Spring Boot ::(v1.3.1.RELEASE)を使用してSTSで作成されたSpringBatchプロジェクトがH2でどのように動作するかを確認することでしたデータベース;後者を行うには、H2コンソールを実行し、バッチ実行のDB結果を照会できる必要がありました。

これは私がやったことであり、発見したものです:

  1. Spring Bootを使用してSTSでWebプロジェクトを作成しました: enter image description here

    • 後者のpom.xmlに次を追加しました: enter image description here
    • プロジェクトに次のようなSpring構成ファイルを追加しました: enter image description here これにより、STSのWebプロジェクトの欠陥が解決されます。ここでプロジェクトを実行すると、次のようにH2コンソールにアクセスできます。 http:// localhost:8080/consoleenter image description here
  2. ここで、次のようにSTSでSpringBatchプロジェクトを作成します(代替方法は、データを永続化するためのクラスのほとんどが欠けている別のテンプレートを作成します。この方法は、2つのプロジェクトを作成します:1つ Complete initial Complete を以下で使用します。): enter image description here

    • STSで作成されたSpringBatchプロジェクトは、アプリケーションの実行が終了すると閉じるメモリ内H2データベースを使用します。実行すると、ログ出力でこれを確認できます。
    • したがって、プロジェクトに付属するデフォルトをオーバーライドする新しいデータソースを作成する必要があります(興味がある場合は、ログメッセージを見てください。デフォルトのデータソースを使用していることがわかります...これはから作成されます:osjdeEmbeddedDatabaseFactoryと以下のパラメーター:
      埋め込みデータベースの起動:url= 'jdbc:hsqldb:mem:testdb'、username= 'sa ')
    • したがって、メモリ内で開始してから閉じます。 H2コンソールでデータを見る機会はありません。消えてしまった。
    • したがって、次のようにDataSourceを作成します。 enter image description here
    • もちろん、プロパティファイルを使用して、さまざまな DataSource インスタンスのパラメーターとプロファイルをマッピングすることもできますが...
    • ここで、画像内の赤い矢印が指すビットを、ファイルを保存できるコンピューター上の場所に設定してください。
    • SpringBatch( Complete プロジェクト)を実行すると、実行後にその場所にdbファイルがあるはずです(個人データを保持)
    • これらのステップで以前に構成したWebプロジェクトを実行すると、データが表示され、すべてのバッチジョブとステップ実行データが表示されます(できたら!): enter image description here 痛みを伴うが、やりがいがある。本当にBOOTSTRAP:=)に役立つことを願っています
13
Beezer

私はまさにこの問題に出会いました。

あなたが説明したことから、jdbcを「実際の」h2サーバーに接続していると思いますが、間違ったモード(埋め込みメモリモード、別名h2mem)。つまり、h2は、他の場所に保存されている真のデータベースを使用する代わりに、メモリ内に新しいデータベースを作成します。

このデータベースに接続するときは、モードGeneric H2(Server)、NOTGeneric H2(Embedded)を使用してください。下の写真を参照してください。

enter image description here

4
Hoàng Long

これは古い質問ですが、同じ問題に出会いました。最終的に、デフォルトのJDBC URLがアプリケーションではなくテストサーバーを指していることがわかりました。修正後、適切なデータベースにアクセスできました。

JDBC URL:が正しく提供されている限り、両方とも動作するGeneric H2(Embedded)オプションとGeneric H2(Server)オプションの両方を試しました。

enter image description here

2
Memin

Jarファイルとインストールされたh2データベースのバージョンは同じである必要があります。

1
rajeesh

私の場合、この問題はJavaでh2ユーザー名、パスワードを設定しなかったことが原因でした。残念ながら、Springはエラーを表示しませんでしたので、理解するのは簡単ではありませんでした。この行をdataSourceメソッドに追加すると、問題を解決するのに役立ちました。

dataSource.setUsername("sa");
dataSource.setPassword("");

また、schema.sqlでテーブルを作成するときにスキーマを指定する必要がありました。

0
Zhenya

スプリングブートでmaven依存関係を使用してH2データベーステーブルを作成および設定した場合、JDBC URLをjdbc:h2:mem:testdb Webコンソールを使用してH2に接続中。

0
Gandhi

Generic H2(サーバー)を選択すると解決しました。デフォルトのGeneric H2(Embedded)を使用したいと思いましたが、これは間違っています。

0
Well Smith