我为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字节。因此,列编码是我的唯一方法。
答案 0 :(得分:1)
结果证明这很好。如果该表中有任何</createTable>
字段,则必须将其放在MEDIUMTEXT
标记之后。
<modifySql dbms="mysql">
<replace replace="MEDIUMTEXT"
with="MEDIUMTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci"/>
</modifySql>