Liquibase 3.8 вставляет значение tinyint с кавычками - PullRequest
0 голосов
/ 17 февраля 2020

Я пытаюсь вставить значение в mysql, используя скрипт liquibase:

<changeSet author="liquibase" id="6225">
    <insert tableName="master">
        <column name="id" value="7"/>
        <column name="insightname" value="topic_modelling"/>
        <column name="insighttype" value="1" valueBoolean="true"/>
    </insert>
</changeSet>

Но при попытке это выдает ошибку:

Ошибка: Усечение данных: данные слишком длинные для столбца 'insighttype' в строке 1 [Failed SQL: INSERT INTO db.master (id, insightname, insighttype) VALUES ('7', 'topic_modelling', '1')]

Это потому, что значение передается в кавычках? Что такое решение?

Мой оператор создания таблицы выглядит следующим образом:

CREATE TABLE ss_insightmaster (
  id int(11) NOT NULL AUTO_INCREMENT,
  insightname varchar(255) NOT NULL,
  enabled tinyint(1) DEFAULT NULL,
  PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;

1 Ответ

2 голосов
/ 17 февраля 2020

Каждая база данных по-разному обрабатывает логические значения - Liquibase ожидает insighttype типа BIT, а не TINYINT, поскольку вы используете MySQL, как вы можете видеть в liquibase github .

ИЛИ

В качестве грязного хака вы можете запустить набор изменений с другим dbms, где ожидается NUMBER:

<changeSet author="liquibase" id="6225" dbms="oracle">
    <insert tableName="master">
        <column name="id" value="7"/>
        <column name="insightname" value="topic_modelling"/>
        <column name="insighttype" value="1" valueBoolean="true"/>
    </insert>
</changeSet>
...