spring-boot - 使用 Spring-Boot 2.3.3 H2 内存数据库抛出 NonTransientConnectionException
问题描述
目前我正在开发一个 Spring-Boot 项目,不幸的是遇到了一个我不知道如何解决的错误......
我在application.properties中为我的项目设置了 H2 In-Memory-Databae,如下所示:
# H2 In-Memory-Database Config
spring.datasource.generate-unique-name=false
spring.datasource.url=jdbc:h2:mem:testdb;MODE=MYSQL
spring.h2.console.enabled=true
在 localhost:8080/h2-console 上调用 H2-Console 并尝试登录,它会抛出以下错误:
找不到数据库“/Users/.../testdb”,要么预先创建它,要么允许远程创建数据库(不推荐在安全环境中)[90149-200] 90149/90149 org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database "/未找到“用户/supportmicha/testdb”,预先创建或允许远程创建数据库(不推荐在安全环境中使用)[90149-200]
数据在那里,并且它在应用程序开始使用这个data.sql脚本填充:
INSERT INTO my_table (id, name, style, created_date, last_modified_date, min_on_hand, quantity_to_produce, price, upc, version ) values ('0a818933-087d-47f2-ad83-2f986ed087eb', 'TestName_1', 'TestStyle_1', CURRENT_TIMESTAMP , CURRENT_TIMESTAMP , 12, 200, 12.95, '0631234200036', 1);
INSERT INTO my_table (id, name, style, created_date, last_modified_date, min_on_hand, quantity_to_brew, price, upc, version ) values ('a712d914-61ea-4623-8bd0-32c0f6545bfd', 'TestName_2', 'TestStyle_2', CURRENT_TIMESTAMP , CURRENT_TIMESTAMP , 12, 200, 12.95, '0631234300019', 1);
INSERT INTO my_table (id, beer_name, beer_style, created_date, last_modified_date, min_on_hand, quantity_to_produce, price, upc, version ) values ('026cc3c8-3a0c-4083-a05b-e908048c1b08', 'TestName_3', 'TestStyle_3', CURRENT_TIMESTAMP , CURRENT_TIMESTAMP , 12, 200, 12.95, '0083783375213', 1);
在 stackoverflow 上的另一个对话中,有人通过使用较旧的 Spring-Boot-Version (2.1.15) 解决了这个问题——但我现在使用的是 2.3.3,保留这个版本非常重要。
另一个提到它可以通过将生成唯一名称设置为 false 来解决 - 如下所示:
spring.datasource.generate-unique-name=false
但这没有帮助。
如果有人可以提示这里到底出了什么问题以及如何解决它,我会很高兴。
解决方案
当您调用 H2 控制台并看到 H2 登录表单时,将JDBC URL:
表单字段值设置为jdbc:h2:mem:testdb
。
推荐阅读
- java - 为什么 xor 运算符会产生“无方法签名”错误消息和/或 bitCount() 需要什么格式才能通过?
- windows - cpprestsdk SSL 帖子不适用于 Windows7,但适用于 Windows 10
- go - Golang API 到 WPA 请求者
- javascript - 如何获取弹出窗口的父窗口的域?
- python - 找不到硒元素下拉菜单python
- blockchain - 为什么我们不能通过智能合约将以太币发送到以太坊地址 0x1
- javascript - Express 找不到 webpack 包
- postgresql - 在 postgres 中建立表之间关系的最佳方法
- javascript - 自动组合“window.width”和“scrolltop”
- python - Django 添加两个数字