使用IntelliJ数据库客户端连接到H2数据库

时间:2015-03-09 11:28:51

标签: grails intellij-idea h2

My Grails应用程序在开发模式下使用h2数据库(Grails应用程序的默认行为)。 DataSource.groovy中的数据库连接设置为

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

并选择" Schemas&中的所有可用数据库。表"标签

enter image description here

"测试连接"按钮表示成功,但从红色圆圈可以看到,没有找到表格。我似乎正确地设置了与h2服务器的连接,但没有建立与模式本身的连接。

顺便说一句,我尝试在应用程序运行后设置此连接,因此我确信架构/表确实存在。

4 个答案:

答案 0 :(得分:62)

您的配置适用于h2:mem数据库。内存数据库在连接它们时没有表格,任何&关闭所有连接后,所有表都将丢失。此外,内存数据库中的(命名)进程的唯一打开它。来自H2 documentation

  

有时需要与同一内存数据库建立多个连接。在这种情况下,数据库URL必须包含名称。示例:jdbc:h2:mem:db1。 使用此URL访问同一数据库仅适用于同一虚拟机和类加载器环境。(强调已添加)

这意味着IDEA将在其JVM(和类加载器)空间中创建唯一的devDb,并且您的应用程序将在其JVM(和类加载器)空间中创建唯一的devDb。您无法从外部JVM进程连接到内存数据库。

如果要同时将应用程序和IntelliJ IDEA(或任何其他数据库工具)连接到H2数据库,则需要

  1. 在您的应用程序中使用嵌入式数据库(写入文件)并使用Mixed Mode允许IntelliJ IDEA(和/或其他数据库工具)连接到它
  2. 使用服务器模式数据库
  3. 有关详细信息,请参阅http://www.h2database.com/html/features.html#connection_modes

答案 1 :(得分:17)

如果你碰巧使用Spring Boot,那么本文就如何设置IntelliJ数据库客户端连接到H2内存数据库有很好的说明:https://techdev.io/en/developer-blog/querying-the-embedded-h2-database-of-a-spring-boot-application

基本上,你使用tcp服务器包装内存数据库,然后你有一个访问点通过远程访问与sql客户端连接。

答案 2 :(得分:2)

在开发过程中,您可以使用grails h2 dbconsole

答案 3 :(得分:-1)

尝试打开http://localhost:8080/dbconsole并填写您的jdbc网址 enter image description here