Liquibase:未设置MEDIUMTEXT字符集

时间:2019-05-12 13:06:42

标签: java mysql liquibase amazon-rds-aurora

我为mysql aurora数据库设置了liquibase更改:

<changeSet author="xxxxxx" id="1553175489296-3">
    <createTable tableName="event">
        <column name="id" type="VARCHAR(64)">
            <constraints primaryKey="true"/>
        </column>
        <column name="created" type="datetime">
            <constraints nullable="false"/>
        </column>
        <column name="created_by" type="VARCHAR(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci"/>
        <column name="description" type="MEDIUMTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci"/>
        <column name="external_service_config" type="MEDIUMTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci"/>
        <column name="language" type="VARCHAR(3) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci"/>
    </createTable>
</changeSet>

VARCHAR(*)字段类型编码已正确设置,但MEDIUMTEXT仍是默认数据库。

我做错什么了吗?

PS:我不能接受

<modifySql dbms="mysql">
            <append value="ENGINE=INNODB CHARSET=utf8mb4 COLLATE utf8mb4_unicode_ci"/>
</modifySql>

由于设置了整个表的编码,我不能这样做,因为我的密钥长于787字节。因此,列编码是我的唯一方法。

1 个答案:

答案 0 :(得分:1)

结果证明这很好。如果该表中有任何</createTable>字段,则必须将其放在MEDIUMTEXT标记之后。

<modifySql dbms="mysql">
            <replace replace="MEDIUMTEXT"
                     with="MEDIUMTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci"/>
</modifySql>