Liquibase 3.8 插入带引号的 tinyint 值

Liquibase 3.8 inserts tinyint value with quotes

我正在尝试使用 liquibase 脚本向 mysql 中插入一个值:

<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>

但是当我尝试这个时它给了我错误:

Error: Data truncation: Data too long for column 'insighttype' at row 1 [Failed SQL: INSERT INTO db.master (id, insightname, insighttype) VALUES ('7', 'topic_modelling', '1')]

是不是因为值是用引号传递的?解决方法是什么?

我的 Create table 语句如下所示:

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;

每个数据库都以不同方式处理布尔值 - Liquibase 期望类型为 BITinsighttype 而不是 TINYINT,因为您使用的是 MySQL,正如您在 liquibase 中看到的那样github.

作为肮脏的 hack,您可以 运行 与另一个 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>