Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 与创建的liquibase.change.core.RawSQLChange没有反向关系_Java_Database_Eclipse_Maven_Liquibase - Fatal编程技术网

Java 与创建的liquibase.change.core.RawSQLChange没有反向关系

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

问题在于: 当使用命令maven时,似乎在中发现了问题,但是2009年,可以标记为“无法复制”,我使用一个file.xml类型的liquibase和一个变更集,但是许多createTable、addPrimaryKey、rollback、addForeignKeyConstraint,这个文件始终创建表和您各自的约束,但是我正在回滚这个错误发生了,我厌倦了上网,然后找不到解决问题的办法,你能解决这个问题吗?与社区分享

maven在以下位置使用的插件和命令:

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中。对不起,我不理解您的评论。听起来事情对你有好处。