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].

应用程序正在运行 - 我可以插入和获取数据,但我不知道数据的位置,以及如何在应用程序之外访问它。

【问题讨论】:

这是一个 H2 mem 数据库 - 一个 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

Micronaut 禁止所有路线

如何从 application.properties 文件中设置 h2.jdbc?

SQL 语句 org.h2.jdbc.JdbcSQLException 中的语法错误:

org.h2.jdbc.JdbcSQLSyntaxErrorException h2 数据库 java

如何使用 JDBC 更新/更改 H2 数据库中的用户帐户名?