dropwizard 和 liquibase:如何维护正在进行的数据库更改
dropwizard and liquibase: how to maintain ongoing database changes
我了解 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 中,它会无限增长。在大型项目中,它变得难以管理只是时间问题。有没有人对维护正在进行的数据库更改的策略有任何建议?
显然,您可以将 migrations.xml 文件分成多个文件,如 documented here。
<?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>
我了解 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 中,它会无限增长。在大型项目中,它变得难以管理只是时间问题。有没有人对维护正在进行的数据库更改的策略有任何建议?
显然,您可以将 migrations.xml 文件分成多个文件,如 documented here。
<?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>