dropwizard和liquibase:如何维护正在进行的数据库更改

时间:2015-05-28 22:50:41

标签: liquibase dropwizard

我理解dropwizard希望所有数据库迁移都在migrations.xml中。 让我们说我开始一个新项目并创建我的表格:

<changeSet id="1" author="codahale">
    <createTable tableName="people">
        <column name="id" type="bigint" autoIncrement="true">
            <constraints primaryKey="true" nullable="false"/>
        </column>
        <column name="fullname" type="varchar(255)">
            <constraints nullable="false"/>
        </column>
        <column name="jobtitle" type="varchar(255)"/>
    </createTable>
</changeSet>

在下一次迭代中,我必须添加一个新列,以便将另一个changeSet添加到migrations.xml:

<changeSet id="2" author="dbdemopostgres">
    <addColumn tableName="people">
        <column name="description" type="varchar(255)">
            <constraints nullable="false"/>
        </column>
    </addColumn>
</changeSet>

然后让我说我必须加长一栏,所以我补充说:

<changeSet id="3" author="dbdemopostgres">
    <modifyDataType tableName="people" columnName="description" newDataType="varchar(300)"/>        
</changeSet>

就这样吧。我继续将所有更改附加到我的migrations.xml,这些更改无限增长。在一个大型项目中,它变得无法控制只是时间问题。有没有人有任何关于维持数据库持续变化的策略建议?

1 个答案:

答案 0 :(得分:1)

您可以将migrations.xml文件显式划分为多个文件{。}}。

<?xml version="1.0" encoding="UTF-8"?> 
<databaseChangeLog
  xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
                      http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd">

  <include file="com/example/db/changelog/db.changelog-1.0.xml"/> 
  <include file="com/example/db/changelog/db.changelog-1.1.xml"/> 
  <include file="com/example/db/changelog/db.changelog-2.0.xml"/> 
</databaseChangeLog>