私の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のデータベースクライアントツールを使用して、このデータベースへの接続をセットアップしようとしています。私はそのように接続を作成することから始めます
次に、次のダイアログで、JDBC URLを入力します
[スキーマとテーブル]タブで使用可能なすべてのデータベースを選択します。
「接続のテスト」ボタンは成功を示しますが、赤い円からわかるように、テーブルは見つかりません。スキーマ自体ではなく、h2サーバーへの接続を正しくセットアップしたようです。
ところで、アプリの実行後にこの接続をセットアップしようとするので、スキーマ/テーブルが実際に存在することを確信しています。
構成はh2:mem
データベース用です。メモリデータベースには接続時にテーブルがなく、すべての接続が閉じられるとすべてのテーブルが失われます。さらに、メモリデータベース内の(名前付き)は、それを開くJVMプロセスに固有です。 H2ドキュメント から:
同じメモリ内データベースへの複数の接続が必要になる場合があります。この場合、データベースURLには名前を含める必要があります。例:jdbc:h2:mem:db1。 このURLを使用した同じデータベースへのアクセスは、同じ仮想マシンおよびクラスローダー環境内でのみ機能します。(エンファシスが追加されました)
これは、IDEAがJVM(およびクラスローダー)スペースに一意のdevDb
を作成し、アプリケーションがJVM(およびクラスローダー)スペースに一意のdevDb
を作成することを意味します。外部JVMプロセスからメモリ内データベースに接続することはできません。
アプリケーションとIntelliJ IDEA(または他のDBツール)の両方を同時にH2データベースに接続する場合は、次のいずれかが必要です。
Mixed Mode
を使用してIntelliJ IDEA(および/または他のデータベースツール)がそれに接続できるようにします詳細については、 http://www.h2database.com/html/features.html#connection_modes を参照してください。
この記事では、Spring Bootを使用している場合にIntelliJデータベースクライアントをセットアップしてH2インメモリデータベースに接続する方法について詳しく説明しています。 https://techdev.io/en/developer- blog/querying-the-embedded-h2-database-of-a-spring-boot-application
基本的には、メモリ内データベースをtcpサーバーでラップし、リモートアクセス経由でsqlクライアントに接続するアクセスポイントがあります。
開発中に、grailsを使用できます h2 dbconsole
http:// localhost:8080/dbconsole を開き、jdbc urlを入力してみてください