H2 数据库错误 未知数据类型 INTERVAL

Posted

技术标签:

【中文标题】H2 数据库错误 未知数据类型 INTERVAL【英文标题】:H2 Database error Unknown data type INTERVAL 【发布时间】:2019-11-01 15:42:02 【问题描述】:

我正在为一个 JPA 项目进行集成测试。测试在嵌入式 h2 数据库上运行。但是,当我使用

时,我在休眠模式生成期间收到来自 h2 的错误
@Column(columnDefinition = "INTERVAL HOUR TO MINUTE")

错误是 org.h2.jdbc.JdbcSQLException: Unknown data type: "INTERVAL";

h2 文档表明支持 INTERVAL:

http://www.h2database.com/html/datatypes.html#interval_type

我使用的是 h2 版本 1.4.197

离开 JPA 并直接在 h2 控制台中工作,我尝试了以下脚本,该脚本也会生成未知数据类型错误:

CREATE TABLE test_interval (id INTEGER, test_hours INTERVAL HOUR TO MINUTE);

我尝试过 INTERVAL 类型的其他变体,所有这些变体都会产生相同的错误

我在任何地方都找不到任何关于这个问题的讨论。

【问题讨论】:

【参考方案1】:

您需要使用更新版本的 H2。 H2 从 1.4.198 开始支持标准的INTERVAL 数据类型,但 1.4.198 是 beta 质量版本,请使用更新的版本,例如 1.4.199 或 1.4.200。

在线文档仅适用于最新版本,当前为 1.4.200。如果您使用一些旧版本,则必须使用其发行版中的文档。

【讨论】:

哇,真的吗?我想我的错误是假设如此广泛使用的库使用语义版本编号。如果没有这些,那么文档可能应该提供更多关于何时实施新功能的信息。 H2 从来没有语义版本,版本只是按顺序命名。

以上是关于H2 数据库错误 未知数据类型 INTERVAL的主要内容,如果未能解决你的问题,请参考以下文章

org.h2.jdbc.JdbcSQLException:未知数据类型:“DATEADD”; SQL 语句

使用H2数据库在游戏中运行测试时,未知数据类型为“JSONB”

在关系数据库中链接未知表的外键

H2 - Postgres 模式支持网络数据类型

H2 - CREATE TABLE 创建错误的数据类型

ValueError:错误的封送数据(未知类型代码)