如何在 liquibase 中指定 ENUM 数组?

How to specify array of ENUM in liquibase?

我正在尝试创建一个 table,其中包含一个枚举数组类型的列。样本是

<sql>CREATE TYPE part_state_type AS ENUM ('A','B','C','D');</sql>
<createTable tableName="parts">
   <column name="part_state" type="part_state_type []">
   </column>
</createTable>

当我运行迁移时;我收到以下错误:

Caused by: org.h2.jdbc.JdbcSQLException: Syntax error in SQL statement "CREATE TABLE PUBLIC.PARTS (PART_STATE ENUM('A', 'B', 'C', 'D') [[*]]) "; expected "FOR, UNSIGNED, INVISIBLE, VISIBLE, NOT, NULL, AS, DEFAULT, GENERATED, ON, NOT, NULL, AUTO_INCREMENT, BIGSERIAL, SERIAL, IDENTITY, NULL_TO_DEFAULT, SEQUENCE, SELECTIVITY, COMMENT, CONSTRAINT, PRIMARY, UNIQUE, NOT, NULL, CHECK, REFERENCES, ,, )"; SQL statement:
CREATE TABLE PUBLIC.parts (part_state ENUM('A', 'B', 'C', 'D') []) [42001-197]

知道如何创建 ENUM 数组类型的列吗?我用的是Java11,liquibase版本是3.5.3,h2版本是1.4.197。基于此 https://oliha.dev/articles/enums-as-arrays-in-postgresql/ 似乎在 postgresql 中可以使用枚举数组。所以,我不确定为什么 liquibase 会失败。

ENUM 值在 1.4.197 的持久数据库中被破坏,这个问题在以后的版本中得到修复。

ENUM 值的数组在 H2 的所有版本中都被破坏了,我在错误跟踪器中填充了一个关于它的新问题: https://github.com/h2database/h2database/issues/2935

请注意,ENUM(something) ARRAY 语法仅受当前 H2 支持,H2 2.0 将支持它。 H2 的发布版本没有类型化数组,您可以在其中使用普通 ARRAY 数据类型,但您可以 运行 进入具有持久值的相同问题。 In-memory 假设数据库可能不会受到影响。