Подтвердить что ты не робот

Liquibase, вставляя в столбец BIT, MySQL, данные слишком длинны для столбца

В 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)?

4b9b3361

Ответ 1

Отвечая на мой собственный вопрос, как я понял это сразу после того, как я разместил его. Чтобы вставить в столбец BIT (1), вам нужно определить значение как valueBoolean

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

Ответ 2

Аналогичный случай наблюдается при загрузке записей из таблицы из файлов 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>

Надеюсь, что это поможет другим людям, которые приземлились здесь, имея проблемы с этим.

Ответ 3

В моем случае я использовал loadData вместо insert, и мне пришлось использовать следующее:

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

Ответ 4

В моем случае с MariaDB это должно было быть:

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

Оставив 'type = "бит" ', как было предложено dustin.schultz, я получаю ошибку проверки Liquibase:

column 'type' is required for all columns