连接到H2数据库时使用springboot 2.3.0

时间:2020-05-18 08:12:27

标签: spring database spring-boot h2

在Springboot 2.3.0.RELEASE中 在控制台中连接到h2数据库时出现以下错误

找不到数据库“ mem:testdb”,或者预先创建它或允许远程 数据库创建(在安全环境中不建议使用)[90149-200] 90149/90149

18 个答案:

答案 0 :(得分:22)

您可以通过设置spring.datasource.url属性来解决此问题,

spring.datasource.url=jdbc:h2:mem:testdb

在Spring Boot 2.3.0-RELEASE之前,这是默认设置,但是我不确定它的设置位置。从2.3.0-RELEASE开始,该架构看起来是随机生成的GUID。

答案 1 :(得分:5)

第1步。在application.properties中:

spring.h2.console.enabled=true
spring.datasource.url=jdbc:h2:mem:testdb

步骤2。启动您的Spring Boot应用并打开:

http://localhost:8080/h2-console/

如果仍然遇到问题,请尝试粘贴在application.properties jdbc:h2:mem:testdb中提到的URL值

JDBC URL of h2-console 

那么您将不会遇到以下提到的问题 找不到数据库h2,请预先创建它或允许远程创建数据库(在安全环境中不建议使用)[90149-200] 90149/90149(帮助)

答案 2 :(得分:3)

由于您正在使用旧的JDBC URL,因此无法连接到数据库。每次启动spring项目时,JDBC URL也会随之更改。

解决方案:每次您想在数据库上进行连接时,都从控制台复制JDBC URL

see screenshot

答案 3 :(得分:2)

在Spring Boot 2.3.0中,属性spring.datasource.generate-unique-name设置为true。这样可以随机生成模式名称。

通过将其设置为false,将像以前的版本(jdbc:h2:mem:testdb)中一样生成数据库。我认为这种方法比较可取,而无需手动指定URL。

答案 4 :(得分:1)

第1步。从此处下载h2数据库引擎:

https://www.h2database.com/html/main.html

第2步。在application.properties中:

spring.h2.console.enabled = true

spring.datasource.url = jdbc:h2:mem:testdb

第3步。启动您的Spring Boot应用并打开:

http:// localhost:8080 / h2-console /

它一定对你来说很好。

答案 5 :(得分:1)

从2.3.0版本开始,generate-unique-name的默认值为true

您可以通过以下设置恢复为以前的行为:

spring.datasource.generate-unique-name=false

另请参阅:https://stackoverflow.com/a/62750194/4506703

答案 6 :(得分:1)

在项目的文件夹中创建一个扩展名为.mv.db的文件。确保文件名以.mv.db结尾,否则H2控制台无法识别该文件(我知道这没有任何意义,并且我也没有解释为什么:D)。创建文件后,如下所示输入jdbc:h2:./ devdb到h2控制台的JDBC URL:

Check this image out

那你应该没事!

答案 7 :(得分:1)

当我开始使用 h2 数据库学习数据持久性时,我也遇到了同样的错误。解决方案在控制台日志中。数据库名称是由自动生成的,可以在 spring 日志中找到。错误背后的原因是在 2.3.0 版本发布之后,如果未提及其自动生成的 URL。

这是包含数据库 URL 的日志消息: INFO 16096 --- [restartedMain] o.s.b.a.h2.H2ConsoleAutoConfiguration :H2 控制台在“/h2-console”可用。数据库位于'jdbc:h2:mem:f1dfeade-60dd-4809-8978-42547353b2f3'

答案 8 :(得分:1)

如果这对任何人有帮助。我的问题是因为我的 application.properties 中有这个

spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration

不知道为什么我之前添加了这个配置。但是一旦取出来,它就解决了我的问题

答案 9 :(得分:1)

实际上,您的 h2 数据库正在寻找名为 test.mv.db 的文件。但 该文件不存在于您的用户目录中。所以,它只是 打你耳光,并要求你在那个路径中预先创建它。

注意:这是我们的 H2 DB 存储我们所有信息的根文件。

  1. 在您的 application.properties 文件中添加以下行
    spring.datasource.url = jdbc:h2:mem:testdb

  2. 转到您的用户目录,就我而言,它是 (C:\Users\subra)

  3. 创建一个名为 test.mv.db 的新文件并将其保存在所有文件选项下,如下所示。

    Save Format

  4. 现在重新启动您的应用。

  5. 完成

参考截图:

我的问题:

My Problem


结果

The Result

答案 10 :(得分:0)

在春季版本2.3.0中为h2数据库创建架构时,我遇到了同样的问题...有时数据库会连接,但无法显示我的表结构,所以我尝试更改春季版本,它像魔术一样工作尝试将春季版本更改为2.1.15.RELEASAE

答案 11 :(得分:0)

我通过 jdbc:h2:mem:testdb 而不是 jdbc:h2:~/testdb 连接 h2

答案 12 :(得分:0)

添加 Spring-boot 启动的 JDBC 解决了我的问题。

https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-jdbc/2.5.2

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
    <version>2.5.2</version>
</dependency>

答案 13 :(得分:0)

我在 Windows 10 中遇到了同样的问题。尝试更换

spring.datasource.url=jdbc:h2:~/testdb

spring.datasource.url=jdbc:h2:mem:testdb

答案 14 :(得分:0)

application.propertiesh2-console 的默认 JDBC url 替换为 JDBC Url={ {1}} 下面是 application.properties

jdbc:h2:mem:testdb

答案 15 :(得分:0)

该错误的另一个原因可能是缺少JDBC依赖项:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>

我遇到了完全相同的错误,这就是我的情况。

答案 16 :(得分:-1)

application.property 文件中添加这两个属性

spring.h2.console.enabled=true
spring.datasource.url=jdbc:h2:mem:testdb

在浏览器中输入网址:localhost:<portnumber>/h2-console 您将获得一个重新分级登录数据库的页面 删除页面中现有的 JDBC url 并将此 jdbc:h2:mem:testdb

答案 17 :(得分:-1)

请使用下面的解决方案,它正在工作。

如果是Spring Boot项目,请在登录时将JDBC URL jdbc:h2:~/test改成jdbc:h2:mem:testdb page,这是Spring Boot配置的默认URL。