在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>
Run Code Online (Sandbox Code Playgroud)
在随后的变更集中,我想在此表中插入数据,但是,当将数据插入BIT(1)类型的"活动"列时,MySQL会抱怨"数据截断:数据对于列来说太长了"
我试过了:
<insert>
<column name="active" value="1" type="BIT(1)" />
</insert>
Run Code Online (Sandbox Code Playgroud)
和
<insert>
<column name="active" value="1"/>
</insert>
Run Code Online (Sandbox Code Playgroud)
和
<insert>
<column name="active" value="TRUE" type="BOOLEAN"/>
</insert>
Run Code Online (Sandbox Code Playgroud)
插入BIT(1)列的正确方法是什么?
dus*_*ltz 33
回答我自己的问题,因为我在发布之后发现了这个问题.要插入BIT(1)列,您需要将值定义为valueBoolean
<insert>
<column name="active" valueBoolean="true"/>
</insert>
Run Code Online (Sandbox Code Playgroud)
use*_*357 12
从csv文件加载每个表的记录时有类似的情况<loadData>.在<loadData>元素中,您必须为表中的每个布尔列显式指定类型:
<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>
Run Code Online (Sandbox Code Playgroud)
希望它可以帮助其他在这里遇到麻烦的人.