Soru IntelliJ veritabanı istemcisi kullanarak H2 veritabanına bağlanın


Grails uygulamasında dev modda bir h2 veritabanı kullanılır (Grails uygulamalarının varsayılan davranışı). İçindeki DB bağlantı ayarları DataSource.groovy Hangi

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'nın veritabanı istemci araçlarını kullanarak bu veritabanı için bir bağlantı kurmaya çalışıyorum. Bağlantıyı böyle oluşturmaya başladım

enter image description here

Ardından, aşağıdaki iletişim kutusunda, JDBC URL'sini giriyorum

enter image description here

Ve "Şemalar ve Tablolar" sekmesindeki tüm mevcut veritabanlarını seçin.

enter image description here

"Test Bağlantısı" düğmesi başarıyı gösterir, ancak kırmızı daireden de görebileceğiniz gibi, hiçbir tablo bulunamadı. Şemanın kendisi değil, h2 sunucusuna doğru bir bağlantı kurmuş gibi görünüyor.

BTW, uygulama çalışırken bu bağlantıyı kurmaya çalışıyorum, bu yüzden şemaların / tabloların gerçekten var olduğundan eminim.


25
2018-03-09 11:28


Menşei


Bunu hiç anladın mı? Mark'ın önerilerini boşuna kullanmıyorum (AUTO_SERVER = TRUE ve kök dizinde katıştırılmış DB'yi kullan). Intellij'den bir H2 db'ye asla göz gezdiremiyorum. Bu gülünç bir şekilde zorlaştı. - Jack


Cevaplar:


Yapılandırmanız bir h2:mem veri tabanı. Bellek Veritabanları bunlara bağlandığında hiçbir tabloya sahip değildir ve tüm bağlantılar kapatıldığında tüm tablolar kaybolur. Ayrıca, bellek veritabanında bir (adlandırılmış) JVM sürecine özgü onu açar. İtibaren H2 belgeleri:

Bazen aynı bellek içi veritabanına birden çok bağlantı gereklidir. Bu durumda, veritabanı URL'si bir ad içermelidir. Örnek: jdbc: h2: mem: db1. Bu URL'yi kullanarak aynı veritabanına erişme, yalnızca aynı sanal makine ve sınıf yükleyici ortamında çalışır. (Vurgu eklendi)

Bu, IDEA'nın eşsiz bir özellik yaratacağı anlamına gelir. devDb JVM (ve classloader) alanında ve uygulamanız benzersiz bir devDb JVM (ve classloader) alanında. Harici bir JVM işleminden bir bellek veritabanına bağlanamazsınız.

Hem uygulamanızı hem de IntelliJ IDEA'nızı (veya başka bir DB aracını) bir H2 veritabanına aynı anda bağlamak istiyorsanız, ya da

  1. uygulamanızda gömülü bir veritabanı (bir dosyaya yazıyor) kullanın ve kullanın Mixed Mode IntelliJ IDEA'ya (ve / veya diğer veritabanı araçlarına) bağlanmasına izin vermek için
  2. bir sunucu modu veritabanı kullan

Görmek http://www.h2database.com/html/features.html#connection_modes daha fazla bilgi için.


40
2018-03-09 20:05



karışık modun nasıl etkinleştirileceğini merak edenler için: jdbc: h2: ~ / test; AUTO_SERVER = TRUE (her ikisi de uygulama yapılandırmasında ve fikir db yöneticisi ayarlarında) - deviant


Bu makalede, Spring Boot kullanıyorsanız, IntelliJ veritabanı istemcisini bir H2 bellek içi veritabanına bağlanmak için nasıl kurulacağına dair harika bir yazma vardır: https://techdev.io/en/developer-blog/querying-the-embedded-h2-database-of-a-spring-boot-application

Temel olarak, bellek içi veritabanını bir tcp sunucusu ile sardığınızda, uzaktan erişim yoluyla bir sql istemcisiyle bağlanmak için bir erişim noktanız vardır.


12
2018-03-25 18:21



Link şu an öldü :-( - Rob
techdev.io/en/developer-blog/... - DRaehal
Bu kabul edilmiş bir cevap olmalı! Çok teşekkürler! - www


Geliştirme sırasında grails kullanabilirsiniz h2 dbconsole


2
2017-08-25 19:36





Açmayı dene http: // localhost: 8080 / dbconsole ve jdbc URL'nizi doldurun enter image description here


-2
2018-05-09 06:46



Eğer bahar botu kullanıyorsanız spring.h2.console.enabled=true  içinde application.properties dosya - Basheer AL-MOMANI