support springboot generate from example baeldung java liquibase

java - springboot - Inserción de liquibase en la columna BIT, MySQL, datos demasiado largos para la columna



spring boot liquibase support (4)

En mi caso con MariaDB tenía que ser:

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

Al omitir ''type = "bit" como lo sugiere dustin.schultz, aparece un error de validación de Liquibase:

column ''type'' is required for all columns

En Liquibase, defino una tabla con una columna de tipo 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>

En el conjunto de cambios posterior, quiero insertar datos en esta tabla, sin embargo, cuando inserto datos en la columna ''activa'' de tipo BIT (1), MySQL se queja ''Truncamiento de datos: Datos demasiado largos para la columna''

Yo he tratado:

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

y

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

y

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

¿Cuál es la forma correcta de insertar en una columna BIT (1)?


En mi caso, estaba usando loadData en lugar de insertar, y tuve que usar lo siguiente:

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


Hay un caso similar al cargar registros por tabla desde archivos csv con <loadData> . En el elemento <loadData> , debe especificar explícitamente el tipo para cada columna booleana en la tabla:

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

Espero que ayude a otras personas que aterrizaron aquí teniendo problemas con esto.


Respondiendo a mi propia pregunta, ya que me di cuenta de esto justo después de publicarla. Para insertar en una columna BIT (1), debe definir el valor como valueBoolean

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