【发布时间】:2021-02-04 02:02:00
【问题描述】:
我正在尝试创建一个包含枚举数组类型列的表。样本是
<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 数组类型的列吗?我使用的是 Java 11,liquibase 版本是 3.5.3,h2 版本是 1.4.197。基于此https://oliha.dev/articles/enums-as-arrays-in-postgresql/,似乎在 postgresql 中可以使用枚举数组。所以,我不确定为什么 liquibase 会失败。
【问题讨论】: