英文:
What is the default name of embedded H2 database in Spring Boot?
问题
根据我阅读的内容,嵌入式 H2 数据库在 Spring Boot 中的默认名称应该是 testdb
,但是如果我尝试使用 H2 控制台连接,会出现以下错误:
数据库 "mem:testdb" 未找到,请预先创建它或允许远程数据库创建(在安全环境中不推荐)
只有在我在 application.properties
文件中使用以下参数显式设置名称时,它才能正常工作:
spring.datasource.url=jdbc:h2:mem:testdb
由于应用程序可以在没有这个配置的情况下连接到嵌入式数据库,所以肯定存在不同的默认名称。但自动配置的数据库的默认名称是什么?
英文:
As I've read the default name of the embedded H2 database in Spring Boot should be testdb
, but if I try to connect to with the H2 Console, I get the following error:
> Database "mem:testdb" not found, either pre-create it or allow remote database creation (not recommended in secure environments)
It works only if I set the name explicitly in the application.properties
with the following parameter:
spring.datasource.url=jdbc:h2:mem:testdb
Since the application can connect to the embedded database without this configuration, there must be a different default name. But what is the default name of the automatically configured database?
答案1
得分: 5
在application.properties
中按照 jurez 所说启用 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 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
英文:
Enable h2 console in application.properties as jurez said
spring.h2.console.enabled=true
spring.h2.console.path=/h2-console
spring.jpa.show-sql=true
and then when you run the application in the console you will see something like this:
H2 console available at '/h2-console'. Database available at 'jdbc:h2:mem:2f5b7da9-0cd2-4fdd-98d2-5ef5f76391bc'
then you can use this JDBC URL to connect to the database from the h2-console
http://localhost:8080/h2-console
jdbc:h2:mem:2f5b7da9-0cd2-4fdd-98d2-5ef5f76391bc
you can specify your own name by adding the following property in the application.property file
spring.datasource.url=jdbc:h2:mem:testdb
remember since this is an in-memory database it will be dropped and recreated every time you run your application
h2 also has a persistent mode but it is not recommended, you can do that by adding the following configurations taken from the following tutorial 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
得分: 0
默认情况下,内存数据库只能被运行它们的进程访问。
如果你想从H2控制台访问它,你需要在application.properties中启用它:
spring.h2.console.enabled=true
英文:
By default, memory databases are only accessible to the process in which they are running.
If you want to access it from H2 Console, you need to enable it in application.properties:
spring.h2.console.enabled=true
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论