我为 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>
因为有人为整个表设置了编码,但我无法这样做,因为我的 key 长度超过 787 字节。所以列特定编码对我来说是唯一的方法。
最佳答案
事实证明这非常有效。您必须将其放在 </createTable>
之后如果有的话标记 MEDIUMTEXT
该表中的字段。
<modifySql dbms="mysql">
<replace replace="MEDIUMTEXT"
with="MEDIUMTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci"/>
</modifySql>
关于java - Liquibase:未设置 MEDIUMTEXT 字符集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56099543/