2016-04-19 8 views
0

含めない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, 
    ... 

のchangelogがそうのように、長さを含んでいないのはなぜ? MySQLでは

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

を暗示していますか? –

答えて

1

は、BIGINTは本当に何を意味するものではありません-9223372036854775808から9223372036854775807 BIGINT(20)の整数のために十分であるスペースの8つのバイトを指定します。 MySQLはそれを受け入れることによって寛大である。このMySQLのページで

完全な詳細:BIGINTデータ型で長さhttps://dev.mysql.com/doc/refman/5.5/en/integer-types.html

+0

良い点ですが、なぜliquibaseはmysqlが表示しているものが精度を出力しないのですか? – purecharger

+0

非常に良い質問です。 MySQLのツールがそれを追跡しているのであれば、私には不思議に思えます。 Liquibaseは、JDBCドライバを使用してテーブルとカラムのメタデータをクエリします。私はコードをデバッグしていませんが、JDBCドライバがサイズデータを返さない、Liquibaseがサイズデータを探していない、またはLiquibaseが意図的にサイズデータをスローしていると考えています。 – SteveDonie

関連する問題