找不到数据库,并且IFEXISTS = true,所以我们无法自动创建它

son*_*kar 11 h2 spring-boot

打开h2数据库控制台后出现错误。我输入数据库名称,但显示数据库未找到错误:

找不到数据库“ C:/ Users / Barlekar / onlineshoppings”,并且IFEXISTS = true,因此我们无法自动创建它[90146-199] 90146/90146(帮助)

org.h2.jdbc.JdbcSQLNonTransientConnectionException:找不到数据库“ C:/ Users / Barlekar / onlineshoppings”,并且IFEXISTS = true,因此我们无法自动创建它[90146-199]

Iva*_*Xue 36

如果你正在处理的春天启动项目,请更改JDBC URL jdbc:h2:~/test,以jdbc:h2:mem:testdb在登录页面,这是由Spring引导配置的默认网址。


Sha*_*ian 14

使用2019年之前版本的H2数据库依赖关系,该依赖关系在每次运行独立应用程序时自动创建数据库。例如版本1.4.193。您pom.xml应该包括以下依赖项:

<dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <version>1.4.193</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

  • 如果您希望在更高版本中提供功能,则有问题。 (4认同)
  • 我同意@AlikElzin-kilaka。这不能成为解决方案。我没有设置 H2 版本,因为我更喜欢它依赖于我使用的 Spring Boot 版本。 (2认同)

小智 11

只需将此附加到application.properties文件:

spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
Run Code Online (Sandbox Code Playgroud)


joe*_*ohn 10

您有没有升级H2?

我认为这与以下H2提交有关:

https://github.com/h2database/h2database/commit/8b53f3999c6c5c3d5ca29020e2657968f4f59ec4

进行此更改是由于以下漏洞:

https://www.exploit-db.com/exploits/45506

这意味着,在独立网络模式下运行时,H2的默认值现在是自动创建数据库。

如果您已经阅读并理解了以上内容,并且仍然希望自动创建数据库,则只需将-ifNotExists标志添加到h2 start命令(您的java -cp ...命令)中即可。

  • 请给我们解决方案。 (2认同)
  • @AnonymousAngelo `java -cp h2*.jar org.h2.tools.Server -ifNotExists` 会完成这项工作 (2认同)

小智 8

我将 JDBC URL 更改为

jdbc:h2:mem:testdb

这是工作

  • 这应该是 2020 年的首选答案。 (2认同)

小智 5

问题:

找不到数据库或测试文件夹不在 c:/user/username/test

将其复制并粘贴到 application.properties 文件中:

spring.datasource.url=jdbc:h2:~/test
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
Run Code Online (Sandbox Code Playgroud)

问题是 URL,检查它。问题解决了。