web-dev-qa-db-ja.com

IntelliJデータベースクライアントを使用してH2データベースに接続する

私のGrailsアプリは、開発モードでh2データベースを使用します(Grailsアプリのデフォルトの動作)。 DataSource.groovyのDB接続設定は

dataSource {
    pooled = true
    jmxExport = true
    driverClassName = "org.h2.Driver"
    username = "sa"
    password = ""
    dbCreate = "create-drop" // one of 'create', 'create-drop', 'update', 'validate', ''
    url = "jdbc:h2:mem:devDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE"
}

IntelliJ IDEAのデータベースクライアントツールを使用して、このデータベースへの接続をセットアップしようとしています。私はそのように接続を作成することから始めます

enter image description here

次に、次のダイアログで、JDBC URLを入力します

enter image description here

[スキーマとテーブル]タブで使用可能なすべてのデータベースを選択します。

enter image description here

「接続のテスト」ボタンは成功を示しますが、赤い円からわかるように、テーブルは見つかりません。スキーマ自体ではなく、h2サーバーへの接続を正しくセットアップしたようです。

ところで、アプリの実行後にこの接続をセットアップしようとするので、スキーマ/テーブルが実際に存在することを確信しています。

47
Dónal

構成はh2:memデータベース用です。メモリデータベースには接続時にテーブルがなく、すべての接続が閉じられるとすべてのテーブルが失われます。さらに、メモリデータベース内の(名前付き)は、それを開くJVMプロセスに固有ですH2ドキュメント から:

同じメモリ内データベースへの複数の接続が必要になる場合があります。この場合、データベースURLには名前を含める必要があります。例:jdbc:h2:mem:db1。 このURLを使用した同じデータベースへのアクセスは、同じ仮想マシンおよびクラスローダー環境内でのみ機能します。(エンファシスが追加されました)

これは、IDEAがJVM(およびクラスローダー)スペースに一意のdevDbを作成し、アプリケーションがJVM(およびクラスローダー)スペースに一意のdevDbを作成することを意味します。外部JVMプロセスからメモリ内データベースに接続することはできません。

アプリケーションとIntelliJ IDEA(または他のDBツール)の両方を同時にH2データベースに接続する場合は、次のいずれかが必要です。

  1. アプリケーションで埋め込みファイル(ファイルに書き込む)を使用し、Mixed Modeを使用してIntelliJ IDEA(および/または他のデータベースツール)がそれに接続できるようにします
  2. サーバーモードデータベースを使用する

詳細については、 http://www.h2database.com/html/features.html#connection_modes を参照してください。

66
Javaru

この記事では、Spring Bootを使用している場合にIntelliJデータベースクライアントをセットアップしてH2インメモリデータベースに接続する方法について詳しく説明しています。 https://techdev.io/en/developer- blog/querying-the-embedded-h2-database-of-a-spring-boot-application

基本的には、メモリ内データベースをtcpサーバーでラップし、リモートアクセス経由でsqlクライアントに接続するアクセスポイントがあります。

19
Jason White

開発中に、grailsを使用できます h2 dbconsole

2
demon101

http:// localhost:8080/dbconsole を開き、jdbc urlを入力してみてください enter image description here

0
Peter.Chu