当前位置: 首页 > 知识库问答 >
问题:

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

赵正雅
2023-03-14

我的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

并选择“模式”上的所有可用数据库

“Test Connection”(测试连接)按钮表示成功,但从红色圆圈中可以看到,没有找到任何表格。似乎我已经正确地设置了与h2服务器的连接,但没有设置模式本身。

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

共有3个答案

欧阳骏俊
2023-03-14

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

乌修筠
2023-03-14

如果您碰巧使用Spring Boot:http://web.archive.org/web/20160513065923/http://blog.techdev.de/querying-the-embedded-h2-database-of-a-spring-boot-application/,本文将详细介绍如何设置IntelliJ数据库客户端以连接到H2内存数据库

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

胡泓
2023-03-14

您的配置是针对h2:mem数据库的。内存数据库在连接到它们时没有表,并且

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

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

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

  1. 在应用程序中使用嵌入式数据库(写入文件),并使用混合模式允许IntelliJ IDEA(和/或其他数据库工具)连接到该数据库

看见http://www.h2database.com/html/features.html#connection_modes了解更多信息。

 类似资料:
  • 我正在使用Glassfish应用服务器开发一个web应用程序。我已经安装了H2 DB,现在正试图在glassfish中定义一个连接池,但在尝试ping DB时失败了。 以下是我所做的: > 资源类型:javax。sql。数据源 数据库驱动程序供应商:H2 数据源类名:org。h2.jdbcx。JdbcDataSource 我的“其他属性”包括: 用户:my\u db\u user 当我尝试ping

  • 我一直在努力使用数据库URL概述部分提到的以下连接字符串从Spring Boot应用程序连接H2数据库: 我还尝试了许多不同的tcp(服务器模式)连接组合,但仍然出现错误,例如“连接中断:”java。网运行Spring Boot app时,SocketTimeoutException:连接超时:localhost:9092”。 那么,如何解决这个问题并通过服务器模式连接到H2数据库呢?

  • 测试通过,即数据输入数据库,检查,一切正常。 但当我在调试模式下运行测试,在测试末尾放一个断点,尝试连接到数据库时,它是空的,连表都没有,更别提数据了。要连接,我使用dbever。在连接字符串中,我编写jdbc:h2:mem:mytestdb;db_close_on_exit=false(我尝试了jdbc:h2:tcp://localhost:9092/mem:mytestdb)。检查连接通过,写

  • 我在我的neo4j数据库中创建了大量的节点,我一直很高兴地查询它们。一切都很好,但我不知道如何将web接口连接到我的本地数据库--术语在neo4j文档中似乎不太一致,所以我在以下上下文中使用它: web服务器似乎只是对data/graph.db中的数据库感兴趣。我觉得应该有一些连接到不同本地数据库的选项,但这并不明显。

  • 我对一个应用程序的JPA层进行了几个单元测试。这个JPA层由JPA实体和一个提供持久化实体所需的基本API的服务组成。单元TET直接使用javax.Persistence类来处理PersistenceManager。然后测试持久性API,我可以在日志中看到创建表和序列等的SQL语句。 persistence.xml文件的相关部分如下所示: 我已经下载了Windows安装程序H2 1.4.200,并

  • 我有Connect()方法,它有一个字符串参数,这个参数是用户的输入。我创建了2个数据库:test和test2,但我只能从用户输入连接到test db。我是否应该对承载2个dbs的服务器进行更改,以便能够连接到用户编写的任何数据库??? 主要方法 堆栈跟踪: