刚刚从 spring 初始化程序创建了一个简单的 spring-boot 项目。我去添加一个本地 h2 db 进行测试,但无法登录。似乎它在启动时无法创建测试数据库,但无法弄清楚为什么会这样。
spring:
h2:
console:
enabled: true
path: /h2
datasource:
url: jdbc:h2:mem:testdb;
username: sa
password:
driver-class-name: org.h2.Driver
platform: h2
jpa:
show-sql: true
hibernate:
ddl-auto: create
properties:
hibernate:
dialect=org:
hibernate:
dialect:
H2Dialect: org.hibernate.dialect.H2Dialect
Run Code Online (Sandbox Code Playgroud)
Database "mem:testdb" not found, and IFEXISTS=true, so we cant auto-create it [90146-199] 90146/90146
Ash*_*til 17
在 Spring 的早期版本中,默认 url 将是 jdbc:h2:mem:testdb 并且 testdb 是默认创建的。从 2.3.0 开始,如果没有提到 url,它将自动生成数据库名称。自动生成的数据库名称可以在 spring 日志中找到。
Tar*_*lla 11
我有同样的错误,我发现这些很有帮助:
将 2019 之前的版本添加到 pom.xml 文件中,如下所示:
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.193</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
这修复了错误,但不是正确的方法。较新版本的 H2 数据库不会创建新数据库,因为它默认不存在并且出于安全目的启用为 false。
更好的方法是添加对 url 的更改:
jdbc:h2:mem:testdb;IFEXISTS=FALSE;
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你。我在我的application.properties文件中进行了更改。
小智 6
只需将其附加到您的application.properties文件中即可。
spring.datasource.url=jdbc:h2:mem:testdb
spring.data.jpa.repositories.bootstrap-mode=default
Run Code Online (Sandbox Code Playgroud)
正如斯塔克所说。
只需删除分号:
wrong: jdbc:h2:mem:testdb;
correct: jdbc:h2:mem:testdb
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16666 次 |
| 最近记录: |