Spring Boot中嵌入式H2数据库的默认名称是什么



正如我所读到的,Spring Boot中嵌入式H2数据库的默认名称应该是testdb,但如果我尝试使用H2控制台连接,我会得到以下错误:

数据库"mem:testdb";找不到,请预先创建它或允许远程数据库创建(在安全环境中不推荐(

只有当我使用以下参数在application.properties中显式设置名称时,它才有效:

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

由于应用程序可以在没有此配置的情况下连接到嵌入式数据库,因此必须有不同的默认名称但是自动配置的数据库的默认名称是什么

如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控制台连接到数据库

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

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

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

请记住,由于这是一个内存中的数据库,每次运行应用程序时都会将其删除并重新创建

h2也有一个持久模式,但不推荐使用,您可以通过添加以下配置来实现这一点,这些配置取自以下教程Spring Boot和h2内存数据库-为什么、什么和如何?

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

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

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

spring.h2.console.enabled=true

最新更新