【问题标题】:Liquibase inserting into BIT column, MySQL, data too long for columnLiquibase插入BIT列,MySQL,列数据太长
【发布时间】:2015-09-24 00:07:14
【问题描述】:

在 Liquibase 中,我定义了一个包含 BIT(1) 类型列的表

<changeSet author="foobar" id="create-configuration-table">
    <createTable tableName="configuration">
        <column autoIncrement="true" name="id" type="BIGINT(19)">
            <constraints primaryKey="true" />
        </column>
        <column name="active" type="BIT(1)" />
        <column name="version" type="INT(10)" />
    </createTable>
</changeSet>

在随后的变更集中,我想将数据插入到这个表中,但是,当将数据插入到 BIT(1) 类型的“活动”列中时,MySQL 会报错“数据截断:列的数据太长”

我试过了:

<insert>
   <column name="active" value="1" type="BIT(1)" />
</insert>

<insert>
   <column name="active" value="1"/>
</insert>

<insert>
   <column name="active" value="TRUE" type="BOOLEAN"/>
</insert>

插入 BIT(1) 列的正确方法是什么?

【问题讨论】:

标签: java liquibase


【解决方案1】:

在我发布后立即回答我自己的问题。要插入 BIT(1) 列,您需要将值定义为 valueBoolean

<insert>
   <column name="active" valueBoolean="true"/>
</insert>

【讨论】:

  • 我在从 CSV 加载数据时遇到了类似的问题。如果从 CSV 加载数据 节点应将字段声明为 ,并且 CSV 中的值应为 true/false
【解决方案2】:

就我而言,我使用的是 loadData 而不是 insert,我必须使用以下内容:

<column name="active" type="boolean"/>

【讨论】:

  • 表示要插入的值是一个位(或多个位)Mysql 和 MariaDB 使用符号:b'0' 分别为 b'1' 或多个位,例如b'00100110'
【解决方案3】:

在使用&lt;loadData&gt; 从 csv 文件中加载每个表的记录时,也有类似的情况。 在&lt;loadData&gt; 元素中,您必须为表中的每个布尔列显式指定类型:

<loadData encoding="UTF-8"
          file="path/to/file.csv"
          separator=","
          tableName="MY_TABLE"
>
    <!-- specify that values in my_boolean_column should be interpreted as Boolean values -->
    <column name="my_boolean_column" type="BOOLEAN" />
</loadData>

希望它能帮助其他遇到此问题的人。

【讨论】:

  • 它对我不起作用。 Liquibase 仍在尝试将“1”插入列中。
【解决方案4】:

就我的 MariaDB 而言,它必须是:

<column name="show_in_app_directory" type="bit" valueBoolean="true" />

按照dustin.schultz的建议省略'type="bit"'我得到一个Liquibase验证错误:

column 'type' is required for all columns

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-15
    • 2016-02-26
    相关资源
    最近更新 更多