Liquibase generateChangeLog tidak termasuk panjang kolom (MySQL)

Saya menggunakan perintah generateChangeLog Liquibase sebagai berikut:

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

Yang menghasilkan log perubahan XML tanpa definisi panjang kolom untuk semua kolom.

Contoh:

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

Definisi Kolom (cuplikan):

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

Mengapa changelog tidak menyertakan panjangnya, seperti itu?

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

person purecharger    schedule 19.04.2016    source sumber
comment
Apakah panjang tersirat oleh tipe data BIGINT?   -  person Jeff B    schedule 19.04.2016


Jawaban (1)


Di MySQL, BIGINT menentukan ruang 8 byte, yang cukup untuk bilangan bulat dari -9223372036854775808 hingga 9223372036854775807. BIGINT(20) tidak berarti apa-apa. MySQL bermurah hati dengan menerimanya.

Detail selengkapnya di halaman MySQL ini: https://dev.mysql.com/doc/refman/5.5/en/integer-types.html

person SteveDonie    schedule 19.04.2016
comment
Poin bagus, tetapi mengapa liquibase tidak menghasilkan presisi jika itu yang ditunjukkan oleh mysql? - person purecharger; 21.04.2016
comment
Pertanyaan yang sangat bagus. Tampaknya aneh bagi saya jika alat MySQL melacaknya. Apa yang dilakukan Liquibase adalah menggunakan driver JDBC untuk menanyakan metadata tabel dan kolom. Saya belum melakukan debug melalui kode, tapi saya membayangkan driver JDBC tidak mengembalikan data ukuran, Liquibase tidak mencari data ukuran, atau Liquibase sengaja membuang data ukuran. - person SteveDonie; 21.04.2016