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

如何从Intellij IDEA访问内存h2数据库

双弘益
2023-03-14

在Spring Boot项目中,我试图从我的IDE中查看内存中的表。

如何从Intellij IDEA访问内存中的h2数据库。

这是我的应用程序的一个片段。yml:

 h2:
    datasource:
        url: jdbc:h2:mem:mydb
        username: username
        password: 123
        driver-class-name: org.h2.Driver
        init-sql: h2.sql
    console:
      enabled: true
      path: /search/console
      settings:
        trace: false
        web-allow-others: false

共有3个答案

梁丘飞鸾
2023-03-14

我找到了另一种方法。我创建了H2 Serverbean并将其添加到我的SpringBoot应用程序中。它看起来像这样:

// Start internal H2 server so can query from IDE
@Bean(initMethod = "start", destroyMethod = "stop")
public Server h2Server() throws SQLException {
    return Server.createTcpServer("-tcp", "-tcpAllowOthers", "-tcpPort", "9092");
}

我的application.properties上也有以下内容

spring.jpa.hibernate.ddl-auto=create-drop
spring.jpa.defer-datasource-initialization=true
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=password

spring.sql.init.mode=always

# Initialise H2 with H2GIS for spatial support ? see schema-h2.sql also
spring.sql.init.platform=h2
spring.jpa.properties.hibernate.dialect=org.hibernate.spatial.dialect.h2geodb.GeoDBDialect

spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.h2.console.enabled=true
h2.tcp.enabled=true

为了获取我的数据。sql放入Intellij中的表中我必须确保使用了create drop并添加了spring。sql。初始化。模式=始终

注意:我使用的是H2GIS方言-但到目前为止还没有引起任何问题

Intellij中的连接设置仍然是远程,使用此字符串jdbc: h2:tcp://localhost:9092/mem: testdb-不要忘记将端口更改为9092

I在Intellij中的连接窗口中,我还检查了架构下的所有表。然后在mem数据库中显示H2的表。

樊俊悟
2023-03-14

请记住,这可能会显示db而不是表,因为它们只会在h2控制台中可见。要通过IntelliJ访问它们,您可能需要将url和连接更改为文件类型而不是内存中。

所以代替这个:

#spring.datasource.url=jdbc:h2:mem:testdb

你会得到这样的东西:

spring.datasource.url=jdbc:h2:file:~/Users/yourUser/IdeaProjects/resume-portal/src/main/resources/data/resume-portal;MV_STORE=false;AUTO_SERVER=TRUE

然后从url创建数据源后

现在您应该可以看到数据库及其表。

如果您使用新的url进行连接,那么控制台仍然可以使用该url。

这是应用程序的application.yml文件。

spring.jpa.defer-datasource-initialization=true
#spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.url=jdbc:h2:file:./src/main/resources/data/resume-portal;MV_STORE=false;AUTO_SERVER=TRUE
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.datasource.username=sa
spring.datasource.password=
spring.sql.init.mode=always
子车成和
2023-03-14

默认情况下,IntellJ不显示任何数据库。

  1. 右键单击数据源,然后选择属性

结果:

 类似资料:
  • 问题内容: 我目前正在使用jOOQ访问Java中的嵌入式H2数据库以生成表类等。我目前可以执行查询,例如 在我的代码中,返回结果等。 但是我不能查询信息架构。我可以使用H2控制台正常访问它,并且为给定的information_schema表创建视图可以正常工作。我的问题是我应该如何访问information_schema例如执行查询,例如 从我的Java代码中?我是否必须创建视图,是否可以通过jo

  • 我正在构建一个android应用程序,使用谷歌app engine后端。 我在谷歌云存储的一个桶里有一些音频文件(手动上传),我想从后端访问它们(我想获得它们的URL并将它们发送到我的应用程序,这样它就可以播放音频文件)。 谢谢:)

  • 目前,我尝试学习nestjs,因此我遵循官方(cat-)教程构建了一个基本的用户身份验证系统。 当您访问API以更改用户名或密码时,请求应检查用户是否为有效用户(从数据库读取用户)。为了存储用户,我已经有了mongodb连接。 我目前正在琢磨如何在警卫中获得数据库模块/访问权限。 防护正在工作,但只返回true,我尝试注入数据库模块,但没有成功。 使用findOne方法扩展UserService类

  • 在我的项目中,我创建了3个Spring启动应用程序。第一个Spring启动应用程序有h2嵌入式数据库。现在我想直接从我的第二个和第三个Spring启动应用程序访问这个数据库,而无需编写任何服务来获取这些数据。所以有人能告诉我如何实现这一点吗?

  • 问题内容: 我有一个带有URL的H2数据库。我使用创建表格;。然后,我使用从(空)表中选择所有内容。到目前为止,一切都很好。 但是,如果将URL更改为,唯一的区别是数据库现在仅在内存中,这给了我一个提示。我可能在这里缺少一些简单的东西,但是任何帮助将不胜感激。 问题答案: hbm2ddl在创建表后关闭连接,因此h2放弃该连接。 如果你的连接网址是这样配置的 在最后一个连接关闭时,数据库的内容会丢失

  • 我正在inMemory数据库中插入数据,当插入数据时,我得到了一个问题, 使用boot、JPA、H2db在内存中插入数据的示例程序 > 创建Pojo并使用JPA注释进行注释 > 配置在app.prop:中 在data.sql文件中添加了给定表 为data.sql中提到的转换添加了名称。 在哪里配置;在Springboot中? 波乔 控制器 错误原因:对名为'in memorydatabaseShu