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

What is the default name of embedded H2 database in Spring Boot?

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

Database "mem:testdb" not found, either pre-create it or allow remote database creation (not recommended in secure environments)

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

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

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

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

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

spring.h2.console.enabled=true

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

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