2016-04-19 61 views
0

我使用Liquibase的generateChangeLog命令如下:Liquibase generateChangeLog不包括柱長(MySQL的)

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

是長度由BIGINT數據類型暗示? –

回答

1

在MySQL中,BIGINT指定8個字節的空間,這是足以讓從-9223372036854775808到9223372036854775807 BIGINT(20)整數並不真正意味着什麼。 MySQL接受它是慷慨的。

在這個MySQL網頁的全部細節:https://dev.mysql.com/doc/refman/5.5/en/integer-types.html

+0

好點,但爲什麼liquibase不輸出精度,如果這是什麼MySQL顯示? – purecharger

+0

非常好的問題。對我來說似乎很奇怪,如果MySQL的工具跟蹤。 Liquibase所做的是使用JDBC驅動程序來查詢表格和列元數據。我沒有通過代碼進行調試,但我認爲JDBC驅動程序要麼沒有返回大小數據,Liquibase沒有查找大小數據,或者Liquibase故意丟棄大小數據。 – SteveDonie