如何修改 liquibase 中 sql 脚本的默认执行顺序?



我正在尝试在Liquibase中运行一堆sql脚本。但是,默认情况下,liquibase 会按照它们在目录中的放置顺序执行所有脚本。有什么方法可以改变这些脚本的执行默认执行 i.e,先通过创建表脚本执行,然后执行所有插入脚本。

我的主更新日志文件:

<?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">
<includeAll path="../migration/" relativeToChangelogFile="true"/>
</databaseChangeLog>

我将所有sql脚本放在迁移文件夹中。

您无法修改执行顺序。您唯一能做的就是通过重命名文件来更改/migration目录中文件的顺序。

据我所知,Liquibase按字母顺序对文件进行排序。

在文件内部 Liquibase 从上到下逐个执行 changeSets。

您可以使用<include>代替<includeAll>。这样,您就可以按所需的顺序包含更改日志文件。

<?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="../migration/changeLog_3.xml" relativeToChangelogFile="true"/>
<include file="../migration/changeLog_1.xml" relativeToChangelogFile="true"/>
<include file="../migration/changeLog_2.xml" relativeToChangelogFile="true"/>
</databaseChangeLog>

最新更新