自动回滚不适用于 Postgresql 上的 liquibase

     2023-04-09     112

关键词:

【中文标题】自动回滚不适用于 Postgresql 上的 liquibase【英文标题】:Auto rollback not working for liquibase on Postgresql 【发布时间】:2017-07-31 05:08:36 【问题描述】:

我正在使用 postgres 数据库:

Maven pom.xml:

<project
    xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
        http://maven.apache.org/maven-v4_0_0.xsd">`enter code here`

    <modelVersion>4.0.0</modelVersion>`enter code here`

    <groupId>testing</groupId>
    <artifactId>CubeGenerator</artifactId>
    <packaging>jar</packaging>
    <version>1.0-SNAPSHOT</version>
    <name>CubeGenerator</name>
    <url>http://maven.apache.org</url>
    <dependencies>
        <dependency>
            <groupId>org.liquibase.ext</groupId>
            <artifactId>liquibase-postgresql</artifactId>
            <version>3.0</version>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.liquibase</groupId>
                <artifactId>liquibase-maven-plugin</artifactId>
                <version>3.5.0</version>
                <configuration>
                    <changeLogFile>/pgdb/lb/changelog.postgresql.sql</changeLogFile>
                    <url>jdbc:postgresql://localhost:5432/deldb</url>
                    <username>rolldel</username>
                    <password>rolldel</password>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>updateSQL</goal>
                            <goal>futureRollbackSQL</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

Liquibase.properties:

[postgres@pgtest lb]$ cat liquibase.properties
driver: org.postgresql.Driver
classpath: /pgdb/lb/postgresql-42.1.1.jre6.jar
changeLogFile:/pgdb/lb/changelog.postgresql.sql
url: jdbc:postgresql://localhost:5432/deldb
username: rolldel
password: rolldel

更新日志:

--liquibase formatted sql

--changeset postgres:1-1
CREATE TABLE action (acn_id numeric(10) NOT NULL, trg_id numeric(10) NOT NULL, act_id numeric(10) NOT NULL, acn_configured_pig_id numeric(10) NOT NULL, acn_running_pig_id numeric(10), acn_name VARCHAR(255) NOT NULL, acn_order_no numeric(10) NOT NULL, system_generated_fl CHAR(1), acn_delete_fl CHAR(1) NOT NULL, acn_version_id numeric(10) NOT NULL, ptn_id numeric(10) NOT NULL);

CREATE TABLE action_pin (anp_id numeric(10) NOT NULL, cmp_id numeric(10) NOT NULL, act_id numeric(10) NOT NULL, anp_name VARCHAR(255) NOT NULL, anp_input_fl CHAR(1) NOT NULL, anp_order_no numeric(10) NOT NULL, system_generated_fl CHAR(1), anp_delete_fl CHAR(1) NOT NULL, anp_version_id numeric(10) NOT NULL, ptn_id numeric(10) NOT NULL);

CREATE TABLE action_pin_connection (apc_id numeric(10) NOT NULL, apc_from_acn_id numeric(10), apc_from_anp_id numeric(10), apc_from_trg_id numeric(10), apc_from_trp_id numeric(10), apc_to_acn_id numeric(10) NOT NULL, apc_to_anp_id numeric(10) NOT NULL, system_generated_fl CHAR(1), apc_delete_fl CHAR(1) NOT NULL, apc_version_id numeric(10) NOT NULL, ptn_id numeric(10) NOT NULL);

liquibase 更新正在运行,但 liquibase 回滚不起作用。

如果我在更改日志中添加--rollback drop table,那么它就可以工作了。

但是,为什么 auto rollback 不适用于创建表 SQL?

【问题讨论】:

【参考方案1】:

对我来说,那个变更日志看起来不像是有效的 YAML。

Liquibase 无法为用 SQL 编写的更改自动创建回滚。这将需要一个 SQL 解析器(针对每种 SQL 方言)。

如果您希望 Liquibase 自动生成回滚,请使用 createTable 更改。

【讨论】:

我创建了 xml 格式的变更日志并且自动回滚工作。谢谢劳伦兹。【参考方案2】:

指定要回滚的标签将回滚在应用给定标签后针对目标数据库执行的所有更改集。我认为有合适的答案: 你可以参考下面的***链接dbf回答 https://***.com/a/35370538/8363483

【讨论】:

我尝试使用标签 deldb=# UPDATE DATABASECHANGELOG SET TAG = 'version_1.1' WHERE DATEEXECUTED = (SELECT MAX(DATEEXECUTED) FROM (SELECT DATEEXECUTED FROM DATABASECHANGELOG) AS X); [postgres@pgtest lb]$ java -jar liquibase.jar rollbackSQL version_1.0 运行 Liquibase 时出现意外错误:未创建 liquibase.change.core.RawSQLChange 的逆向

Flyway - 自动增量 ID 不适用于 PostgreSQL 中的测试数据

】Flyway-自动增量ID不适用于PostgreSQL中的测试数据【英文标题】:Flyway-autoincrementidnotworkingwithtestdatainPostgreSQL【发布时间】:2021-11-2500:53:55【问题描述】:在我将Flyway添加到我的项目之前,我可以运行POST请求并成功创建新用户,ID... 查看详情

自动保存不适用于 UIManagedDocument 上的 NSUndoManager

】自动保存不适用于UIManagedDocument上的NSUndoManager【英文标题】:Auto-savenotworkingwithNSUndoManageronUIManagedDocument【发布时间】:2013-03-0505:08:45【问题描述】:分辨率NSUndoManager只能用于子NSManagedObjectContext(与CoreData一起使用时)。这是... 查看详情

Visual Studio 自动完成功能不适用于 html 页面上的 javascript/css

】VisualStudio自动完成功能不适用于html页面上的javascript/css【英文标题】:VisualStudioautocompletenotworkingforjavascript/cssonhtmlpage【发布时间】:2016-12-0520:24:04【问题描述】:我正在使用html、css和javascript试用visualstudio代码编辑器。我注意... 查看详情

为啥递归联合不适用于 PostgreSQL 中的复合类型

】为啥递归联合不适用于PostgreSQL中的复合类型【英文标题】:WhyrecursiveuniondoesnotworkwithcompositetypesinPostgreSQL为什么递归联合不适用于PostgreSQL中的复合类型【发布时间】:2018-06-1713:13:02【问题描述】:我有一个包含复合类型字段的... 查看详情

回滚不适用于可转换的核心日期实体

】回滚不适用于可转换的核心日期实体【英文标题】:rollbackisnotworkingfortransformableCoreDateentities【发布时间】:2013-01-2206:36:19【问题描述】:我有一个应用程序,它将数据存储在CoreDataManagedObjects中。这些对象包含几个属性-NSString... 查看详情

PostgreSQL 函数不适用于 WHERE 子句

】PostgreSQL函数不适用于WHERE子句【英文标题】:PostgreSQLFunctionnotworkingwithWHEREclause【发布时间】:2020-04-2016:18:28【问题描述】:我正在尝试在Postgres中创建一个函数,以使我的查询比DjangoORM更快。但是我面临的问题是,当查询中没... 查看详情

PostgreSQL 咨询锁不适用于 Doctrine 的 DBAL

】PostgreSQL咨询锁不适用于Doctrine的DBAL【英文标题】:PostgreSQLadvisorylocksarenotworkingwithDoctrine\'sDBAL【发布时间】:2015-06-0400:23:01【问题描述】:我在Doctrine的DBAL中尝试使用advisorylocks时遇到了一种非常奇怪的行为。我有一个Symfony2应... 查看详情

内联 CSS 不适用于我的 li [重复]

】内联CSS不适用于我的li[重复]【英文标题】:inlinecssnotworkingformyli[duplicate]【发布时间】:2013-11-0422:30:17【问题描述】:我尝试如下设置一个新的backgroundhovercolor到我的litag但我设置失败请指导我的语法。<navclass="icons-example">&... 查看详情

删除不适用于 Play! 2.4、Slick 3 和 PostgreSQL

】删除不适用于Play!2.4、Slick3和PostgreSQL【英文标题】:DeletingisnotworkingwithPlay!2.4,Slick3andPostgreSQL【发布时间】:2015-10-0113:13:57【问题描述】:我已阅读此SO帖子:Play2.4-Slick3.0.0-DELETEnotworking但在我的情况下似乎不起作用。我设法... 查看详情

Chrome 自动填充功能不适用于特定页面

】Chrome自动填充功能不适用于特定页面【英文标题】:Chromeautofilldoesnotworkingonspecificpage【发布时间】:2014-05-0820:53:39【问题描述】:我的网站中有一组页面,我在每个页面中输入相似的数据。我非常使用chrome的自动填充来输入数... 查看详情

UIScrollView 作为 UIView 的子视图不适用于自动布局

】UIScrollView作为UIView的子视图不适用于自动布局【英文标题】:UIScrollViewassubviewofUIViewdoesnotworkwithautolayout【发布时间】:2016-03-2412:11:52【问题描述】:我创建了一个customView(UIView),其中包含一个UIScrollView作为其子视图,并且我放... 查看详情

Ctrl + Space 不适用于 Eclipse 上的内容辅助

...式,内容辅助绑定到Ctrl+Space。有时在输入dote.g.后窗口会自动弹出建议,但使用组合键时不会发生这种情况。Eclipse版本:面 查看详情

HTML5 视频自动播放不适用于 slick.js

】HTML5视频自动播放不适用于slick.js【英文标题】:HTML5Videoautoplaynotworkingwithslick.js【发布时间】:2016-07-1704:34:11【问题描述】:重新表述问题HTML5视频自动播放在chrome和safari上的slick.js中不起作用。在Firefox中一切正常。自动播放... 查看详情

自动完成不适用于 IE 的 asp.net 文本框

】自动完成不适用于IE的asp.net文本框【英文标题】:AutoCompletenotworkingonIEforaasp.nettextbox【发布时间】:2014-06-1910:38:39【问题描述】:我有一个简单的文本框,我试图在其中启用自动完成功能。例子:在Chrome而不是IE上运行良好。... 查看详情

jquery append() 不适用于动态添加的元素

】jqueryappend()不适用于动态添加的元素【英文标题】:jqueryappend()notworkingondynamicallyaddedelements【发布时间】:2012-01-1216:01:59【问题描述】:考虑HTML<ul><li>Defaultitem</li><li>Defaultitem</li></ul><button> 查看详情

HTTPS 协议不适用于 ec2 实例上的 django 和 nginx

...:我一直在尝试在ec2实例中使用django中的nginx将所有请求自动传输到https协议,但我无法这样做..这是我的nginx文件..请向我提出问题。nginx文件serverlisten4 查看详情

CSS 过渡不适用于 FF 中的 top 属性

】CSS过渡不适用于FF中的top属性【英文标题】:CSStransitiondoesnotworkontoppropertyinFF【发布时间】:2013-08-2817:20:12【问题描述】:我有以下HTML:<ul><li><ahref="#"><h2>title</h2></a></li><li><ahref="#">& 查看详情

主题不适用于 Android 上的 DialogFragment

】主题不适用于Android上的DialogFragment【英文标题】:ThemenotapplyingtoDialogFragmentonAndroid【发布时间】:2012-05-2209:40:35【问题描述】:我正在将旧Dialogs切换为DialogFragment,但主题和样式似乎不起作用。我正在使用兼容库v4中的DialogFragm... 查看详情