Liquibase generateChangeLog без учета длины столбца (MySQL)

Я использую команду Liquibase generateChangeLog следующим образом:

liquibase --driver=com.mysql.jdbc.Driver \
  --classpath=$HOME/.m2/repository/mysql/mysql-connector-java/5.1.26/mysql-connector-java-5.1.26.jar \
  --changeLogFile=./db.changelog.xml \
  --url="jdbc:mysql://localhost:3306/db" \
  generateChangeLog

Который выводит журнал изменений XML без определений длины столбца для всех столбцов.

Пример:

<changeSet author="purecharger (generated)" id="1461081110463-2">
    <createTable tableName="account">
        <column name="id" type="BIGINT">
            <constraints nullable="false"/>
        </column>
        ...
    </createTable>
</changeSet>

Определение столбца (фрагмент):

Create Table: CREATE TABLE `account` (
  `id` bigint(20) NOT NULL,
  ...

Почему журнал изменений не включает длину, вот так?

<column name="id" type="BIGINT(20)">
    <constraints nullable="false"/>
</column>

person purecharger    schedule 19.04.2016    source источник
comment
Подразумевается ли длина типом данных BIGINT?   -  person Jeff B    schedule 19.04.2016


Ответы (1)


В MySQL BIGINT указывает 8 байтов пространства, что достаточно для целых чисел от -9223372036854775808 до 9223372036854775807. BIGINT(20) на самом деле ничего не значит. MySQL великодушен, принимая его.

Полная информация на этой странице MySQL: https://dev.mysql.com/doc/refman/5.5/en/integer-types.html

person SteveDonie    schedule 19.04.2016
comment
Хороший вопрос, но почему liquibase не выводит точность, если это то, что показывает mysql? - person purecharger; 21.04.2016
comment
Очень хороший вопрос. Мне кажется странным, если инструменты MySQL отслеживают это. Liquibase использует драйвер JDBC для запроса метаданных таблицы и столбца. Я не проводил отладку кода, но предполагаю, что драйвер JDBC либо не возвращает данные о размере, либо Liquibase не ищет данные о размере, либо Liquibase намеренно отбрасывает данные о размере. - person SteveDonie; 21.04.2016