无法连接到h2控制台
在使用SpringBoot时,在内存中使用h2数据库时,无法从h2控制台连接到数据库。
错误原因:找不到数据库”mem:testdb”,请预先创建它或允许远程数据库创建(不推荐在安全环境中使用)[90149-214] 90149/90149
环境
IDE:STS 3.9.7 RELEASE
JAVA:8
他使用以下设置文件。
事件发生时的配置文件
应用程序配置文件
// 启用控制台
spring.h2.console.enabled=true
// 控制台路径
spring.h2.console.path=/h2-console
// 是否跟踪
spring.h2.console.settings.trace=true
// 是否允许远程连接
spring.h2.console.settings.web-allow-others=false
// 创建的数据库名称
spring.datasource.url=jdbc:h2:mem:testdb
// 数据库驱动程序类名
spring.datasource.driver-class-name=org.h2.Driver
// 用户密码
spring.datasource.username=sa
spring.datasource.password=
创建.gradle文件
id ‘org.springframework.boot’ version ‘2.7.4’
id ‘io.spring.dependency-management’ version ‘1.0.14.RELEASE’
id ‘java’
id ‘war’
}
组 = ‘com.example’
版本 = ‘0.0.1-SNAPSHOT’
源兼容性 = ‘1.8’
仓库 {
中央仓库()
}
依赖项 {
实现 ‘org.springframework.boot:spring-boot-starter-thymeleaf’
实现 ‘org.springframework.boot:spring-boot-starter-web’
运行时仅限 ‘com.h2database:h2’
提供运行时 ‘org.springframework.boot:spring-boot-starter-tomcat’
测试实现 ‘org.springframework.boot:spring-boot-starter-test’
}
任务.命名为(‘测试’) {
使用JUnit平台()
}
「implementation ‘org.springframework.boot:spring-boot-starter-web’」和「runtimeOnly ‘com.h2database:h2’」是启动H2控制台时所需的库。
设定.gradle
解决方案1:在build.gradle文件中添加以下内容,并在IDE的控制台日志中确认JDBC URL。
这样,我的IDE(综合开发环境)的日志会显示类似于以下内容:
“INFO 17824 — [ main] o.s.b.a.h2.H2ConsoleAutoConfiguration : H2控制台可在’/h2-console’访问。数据库可在’jdbc:h2:mem:○○○○-○○’访问。”
然后,我可以将’jdbc:h2:mem:○○’复制到JDBC URL中以进行连接。
关闭随机生成模式的设置为解决方案2。
在 application.properties 中添加以下内容
spring.datasource.generate-unique-name=false
这将不再随机生成模式,而是可以在”testdb”中生成。
在控制台中显示的JDBC URL也如下所示:
“INFO 17824 — [ main] o.s.b.a.h2.H2ConsoleAutoConfiguration : H2 console 可用于‘/h2-console’。数据库可在‘jdbc:h2:mem:testdb’访问。”
- 参考記事