Ответ 1
Отвечая на мой собственный вопрос, как я понял это сразу после того, как я разместил его. Чтобы вставить в столбец BIT (1), вам нужно определить значение как valueBoolean
<insert>
<column name="active" valueBoolean="true"/>
</insert>
В 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)?
Отвечая на мой собственный вопрос, как я понял это сразу после того, как я разместил его. Чтобы вставить в столбец BIT (1), вам нужно определить значение как valueBoolean
<insert>
<column name="active" valueBoolean="true"/>
</insert>
Аналогичный случай наблюдается при загрузке записей из таблицы из файлов 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>
Надеюсь, что это поможет другим людям, которые приземлились здесь, имея проблемы с этим.
В моем случае я использовал loadData вместо insert, и мне пришлось использовать следующее:
<column name="active" type="boolean"/>
В моем случае с MariaDB это должно было быть:
<column name="show_in_app_directory" type="bit" valueBoolean="true" />
Оставив 'type = "бит" ', как было предложено dustin.schultz, я получаю ошибку проверки Liquibase:
column 'type' is required for all columns