Java 与创建的liquibase.change.core.RawSQLChange没有反向关系
问题在于: 当使用命令maven时,似乎在中发现了问题,但是2009年,可以标记为“无法复制”,我使用一个file.xml类型的liquibase和一个变更集,但是许多createTable、addPrimaryKey、rollback、addForeignKeyConstraint,这个文件始终创建表和您各自的约束,但是我正在回滚这个错误发生了,我厌倦了上网,然后找不到解决问题的办法,你能解决这个问题吗?与社区分享 maven在以下位置使用的插件和命令:Java 与创建的liquibase.change.core.RawSQLChange没有反向关系,java,database,eclipse,maven,liquibase,Java,Database,Eclipse,Maven,Liquibase,问题在于: 当使用命令maven时,似乎在中发现了问题,但是2009年,可以标记为“无法复制”,我使用一个file.xml类型的liquibase和一个变更集,但是许多createTable、addPrimaryKey、rollback、addForeignKeyConstraint,这个文件始终创建表和您各自的约束,但是我正在回滚这个错误发生了,我厌倦了上网,然后找不到解决问题的办法,你能解决这个问题吗?与社区分享 maven在以下位置使用的插件和命令: liquibase:rollback
liquibase:rollback -Dliquibase.rollbackTag=payScript -PproductionPostgreSql
这个插件
<plugin>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-maven-plugin</artifactId>
<version>3.4.1</version>
<configuration>
<changeLogFile>${basedir}/src/main/resources/changelogs/db.changelog-master.xml</changeLogFile>
<driver>${driver}</driver>
<url> ${host.db}</url>
<username>${user.db}</username>
<password>${password.db}</password>
</configuration>
<dependencies>
<dependency>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-core</artifactId>
<version>3.4.1</version>
</dependency>
</dependencies>
</plugin>
org.liquibase
这是预期的行为。在变更日志的某个地方,您有一个使用原始SQL的变更集。这里没有包含它,但实际内容并不重要——只要它是原始SQL,Liquibase就无法确定如何“撤消”或回滚该更改。解决此问题的方法是查看该变更集,并向该变更集添加一个回滚标记,该标记描述如何回滚所做的更改
这里的文档用于SQL标记。此处介绍了回滚的一般情况:
请特别注意本段:
其他重构,如“drop table”和“insert data”,则没有
可以自动生成的相应回滚命令。
在这些情况下,以及您希望覆盖默认值的情况下
生成的回滚命令,可以通过
变更集标记中的标记。如果你不想做任何事情
撤消回滚模式中的更改,使用空标记
下面是一个显示原始SQL变更集和相应回滚标记的示例
<changeSet author="liquibase-docs" id="sql-example">
<sql dbms="h2, oracle"
endDelimiter="\nGO"
splitStatements="true"
stripComments="true">insert into person (name) values ('Bob')
<comment>What about Bob?</comment>
</sql>
<rollback>
delete from person where name='Bob';
</rollback>
</changeSet>
在person(name)值('Bob')中插入
鲍勃呢?
从name='Bob'所在的人员中删除;
请注意,这是一个非常幼稚的示例-您可能不想在实际场景中使用它,因为在运行liquibase update
部署此更改后,任何使用数据库的程序都可能会将名为“Bob”的行插入person表中,这个rollback语句将删除所有名为“Bob”的行。this“特别是,请注意这一段:“我是SQL update的一个chageSet,它没有标记rollback,但是没有更改集包含标记payScript,但是标记被放置在rollback和workedI中。对不起,我不理解您的评论。听起来事情对你有好处。