【问题标题】:What is the default name of embedded H2 database in Spring Boot?Spring Boot 中嵌入式 H2 数据库的默认名称是什么?
【发布时间】:2020-12-30 23:58:30
【问题描述】:

因为我已经阅读了 Spring Boot 中嵌入式 H2 数据库的默认名称应该是 testdb,但是如果我尝试使用 H2 控制台连接,则会收到以下错误:

找不到数据库“mem:testdb”,要么预先创建它,要么允许远程创建数据库(不推荐在安全环境中使用)

仅当我使用以下参数在application.properties 中明确设置名称时才有效:

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

由于应用程序无需此配置即可连接到嵌入式数据库,因此必须有不同的默认名称。 但是自动配置的数据库的默认名称是什么?

【问题讨论】:

    标签: java spring spring-boot jdbc h2


    【解决方案1】:

    如 jurez 所说,在 application.properties 中启用 h2 控制台

    spring.h2.console.enabled=true
    spring.h2.console.path=/h2-console
    spring.jpa.show-sql=true
    

    然后当您在控制台中运行应用程序时,您将看到如下内容:

    H2 console available at '/h2-console'. Database available at 'jdbc:h2:mem:2f5b7da9-0cd2-4fdd-98d2-5ef5f76391bc'
    

    然后你可以使用这个 JDBC URL 从 h2-console 连接到数据库

    http://localhost:8080/h2-console
    
    jdbc:h2:mem:2f5b7da9-0cd2-4fdd-98d2-5ef5f76391bc
    

    您可以通过在 application.property 文件中添加以下属性来指定自己的名称

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

    请记住,因为这是一个内存数据库,它会在您每次运行应用程序时被删除并重新创建

    h2 也有持久化模式但不推荐,你可以通过添加以下配置来做到这一点,取自以下教程Spring Boot and H2 in memory database - Why, What and How?

    spring.datasource.name=yourdbname
    spring.datasource.driverClassName=org.h2.Driver
     
    spring.datasource.initialize=false
    spring.datasource.url=jdbc:h2:file:~/yourdbname;DB_CLOSE_ON_EXIT=FALSE;IFEXISTS=TRUE;DB_CLOSE_DELAY=-1;
     
    spring.jpa.hibernate.ddl-auto = update
    

    【讨论】:

      【解决方案2】:

      默认情况下,内存数据库只能由运行它们的进程访问。

      如果你想从 H2 Console 访问它,你需要在 application.properties 中启用它:

      spring.h2.console.enabled=true
      

      【讨论】:

      • 谢谢,但这不是问题所在。 H2 可从 H2 控制台访问,因为它在同一进程中运行。如果我明确设置数据库名称,它可以工作,但必须有一个默认名称(我不知道)。
      • 没有必要。仅当端点提供多个数据库(例如独立服务器)并且端点必须知道您指的是哪个数据库时才需要名称。对于嵌入式服务器 (mem:),数据库只是一个 Java 对象——它既不需要名称,也不需要端点,也不需要密码。从安全的角度来看,这也是首选。
      猜你喜欢
      • 2018-06-13
      • 1970-01-01
      • 2021-03-11
      • 2018-01-11
      • 2020-02-01
      • 2018-03-30
      • 2012-10-22
      • 1970-01-01
      • 2017-03-01
      相关资源
      最近更新 更多