在Springboot 2.3.0.RELEASE中 在控制台中连接到h2数据库时出现以下错误
找不到数据库“ mem:testdb”,或者预先创建它或允许远程 数据库创建(在安全环境中不建议使用)[90149-200] 90149/90149
答案 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
答案 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
答案 6 :(得分:1)
在项目的文件夹中创建一个扩展名为.mv.db的文件。确保文件名以.mv.db结尾,否则H2控制台无法识别该文件(我知道这没有任何意义,并且我也没有解释为什么:D)。创建文件后,如下所示输入jdbc:h2:./ devdb到h2控制台的JDBC URL:
那你应该没事!
答案 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 存储我们所有信息的根文件。
在您的 application.properties
文件中添加以下行
spring.datasource.url = jdbc:h2:mem:testdb
转到您的用户目录,就我而言,它是 (C:\Users\subra)
创建一个名为 test.mv.db
的新文件并将其保存在所有文件选项下,如下所示。
现在重新启动您的应用。
完成
参考截图:
答案 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.properties 中 h2-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。