micronaut 中的 H2 默认 jdbc url 是啥
Posted
技术标签:
【中文标题】micronaut 中的 H2 默认 jdbc url 是啥【英文标题】:What is the H2 default jdbc url in micronautmicronaut 中的 H2 默认 jdbc url 是什么 【发布时间】:2021-01-12 20:15:22 【问题描述】:我在 application.yml 中有以下数据源配置(Micronaut 默认值):
datasources:
default:
url: jdbc:h2:mem:devDb;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE
driverClassName: org.h2.Driver
username: 'user'
password: 'user'
schema-generate: CREATE_DROP
dialect: H2
jpa.default.properties.hibernate.hbm2ddl.auto: update
Hikari 记录以下内容:
21:09:01.750 [main] DEBUG com.zaxxer.hikari.HikariConfig - jdbcUrl.........................jdbc:h2:mem:devDb;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE
这似乎是正确的。我尝试连接到数据库,并成功。悬停SHOW TABLES
不返回任何内容。当我将IFEXISTS=true
添加到 url 时,我收到以下错误:
[90146][90146] Database "mem:devDb" not found, and IFEXISTS=true, so we cant auto-create it [90146-200].
应用程序正在运行 - 我可以插入和获取数据,但我不知道数据的位置,以及如何在应用程序之外访问它。
【问题讨论】:
这是一个 H2mem
数据库 - 一个 in-memory DB。该文档解释了此类数据库的位置和访问限制。基本上,它只存在于运行您的应用程序的 JVM 中。没有外部存储位置。
【参考方案1】:
micronaut 中 H2 默认的 jdbc url 是什么
对于hibernate-jpa
功能,默认网址是jdbc:h2:mem:devDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE
。
...但我不知道数据的位置以及如何访问 它在应用程序之外。
数据位于内存中,只能由创建内存数据库的应用程序访问。如果您希望任何其他进程访问数据,则使用内存数据库的应用需要提供对数据的访问权限(例如通过 API)。
这只是一个限制,因为您使用的是内存数据库。如果您需要多个进程连接到数据库,则使用内存数据库可能不是您的最佳解决方案。
【讨论】:
我曾希望它会在某个端口上暴露自己——也许需要一些配置。以上是关于micronaut 中的 H2 默认 jdbc url 是啥的主要内容,如果未能解决你的问题,请参考以下文章
Micronaut 数据:没有为存储库配置支持 RepositoryOperations
如何从 application.properties 文件中设置 h2.jdbc?
SQL 语句 org.h2.jdbc.JdbcSQLException 中的语法错误: