Liquibase: набор символов MEDIUMTEXT не устанавливается - PullRequest
1 голос
/ 12 мая 2019

У меня есть набор смены ликвазы для mysql aurora db:

<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 Ответ

1 голос
/ 12 мая 2019

Оказывается, это работает довольно хорошо.Вы должны поставить его после тега </createTable>, если в этой таблице есть поля MEDIUMTEXT.

<modifySql dbms="mysql">
            <replace replace="MEDIUMTEXT"
                     with="MEDIUMTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci"/>
</modifySql>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...