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

我的 Grails 应用程序在 dev 模式下使用 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"
}

我正在尝试使用 IntelliJIDEA 的数据库客户端工具为这个数据库建立一个连接。我开始创建这样的连接

enter image description here

然后在下面的对话框中,输入 JDBC URL

enter image description here

并在“ Schemas & Tables”选项卡上选择所有可用的数据库。

enter image description here

“ TestConnection”按钮表示成功,但正如您从红色圆圈中看到的,没有找到任何表。我似乎正确地设置了到 h2服务器的连接,但是没有设置模式本身。

顺便说一下,我尝试在应用程序运行时设置这个连接,所以我确信模式/表确实存在。

116812 次浏览

您的配置用于 h2:mem数据库。内存数据库在连接到它们时没有表,当所有连接关闭时,任何 & 所有表都会丢失。此外,内存数据库中的(名称)是 JVM 进程独有的,它打开它。来自 H2文档:

有时需要多个连接到同一个内存数据库。在这种情况下,数据库 URL 必须包含一个名称。示例: jdbc: h2: mem: db1。使用此 URL 访问相同的数据库只能在相同的虚拟机和类装入器环境中工作。(强调添加)

这意味着 IDEA 将在其 JVM (和 classloader)空间中创建唯一的 devDb,您的应用程序将在其 JVM (和 classloader)空间中创建唯一的 devDb。不能从外部 JVM 进程连接到内存中的数据库。

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

  1. 在应用程序中使用嵌入式数据库(写入文件) ,并使用 Mixed Mode允许 IntelliJ IDEA (和/或其他数据库工具)连接到它
  2. 使用服务器模式数据库

有关更多信息,请参见 http://www.h2database.com/html/features.html#connection_modes

在开发期间,您可以使用 grailsH2分贝控制台

这篇文章对如何设置 IntelliJ 数据库客户端连接到一个 h2内存数据库有很好的介绍,如果你碰巧使用的是 Spring Boot: http://web.archive.org/web/20160513065923/http://blog.techdev.de/querying-the-embedded-h2-database-of-a-spring-boot-application/

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

尝试打开 http://localhost:8080/dbconsole并填充 jdbc URL enter image description here

假设您已经创建了实体(用户、地址)

步骤1. 在 application.yml 文件中添加 H2属性。

server:
port: 8080


spring:
datasource:
url: jdbc:h2:~/data/parserpalce (for Mac OS)
username: sa
password: password
driver-class-name: org.h2.Driver
jpa:
database-platform: org.hibernate.dialect.H2Dialect
hibernate:
ddl-auto: update
h2:
console:
enabled: true

步骤2。添加 H2数据库客户端 enter image description here

步骤3。根据 application.yml 属性配置 H2数据库客户端属性。 enter image description here

第4步: 运行应用程序。

步骤5。检查是否创建了表(用户、地址)。 enter image description here

或者你可以在浏览器中使用 H2控制台: Http://localhost:8080/h2-console

附注: 不要忘记在字段中粘贴适当的值!