繁体   English   中英

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

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

因为我已经阅读了 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-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 和内存数据库中的 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 Console 访问它,你需要在 application.properties 中启用它:

spring.h2.console.enabled=true

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM