Rollback is not working in oracle using liquibase

折月煮酒 提交于 2019-12-11 09:59:39

问题


I'm new to Liquibase. I can able to update(changeset which has create table) to the Oracle database using liquibase. while doing update i've created the tag also. But when i try to rollback the updated changes(ie dropping the created table)using the tag. The table was not dropped.

I'm using liquibase-maven plugin 3.4.2. Below are the code in maven.

 <plugins>
  <plugin>
  <groupId>org.liquibase</groupId>
  <artifactId>liquibase-maven-plugin</artifactId>
  <version>3.4.2</version>
   <executions>
   <execution>
    <id>execution1</id>
      <phase>process-resources</phase>
      <configuration>

                 <changeLogFile>src/main/resources/changelog.xml</changeLogFile>  
                 <rollbackTag>checkpoint</rollbackTag>  

                     <driver>oracle.jdbc.OracleDriver</driver>
                    <url>jdbc:oracle:thin:@10.86.24.2:1521:claim</url>
                    <username>Test</username>
                    <password>Test</password>  


        </configuration>
         <goals>

           <goal>rollback</goal>   
           <!--  <goal>rollbackSQL</goal>   -->

         </goals>
    </execution> 
    </executions>
</plugin>

Below are my changelog.xml while rolling back the database.

 <?xml version="1.0" encoding="UTF-8"?>
 <databaseChangeLog xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.liquibase.org/xml/ns/dbchangelog"></databaseChangeLog>

I tried with "rollbackSQL" . But the query to drop table has not be created.

find the below code.

-- *********************************************************************
-- Rollback to 'checkpoint' Script
-- *********************************************************************
-- Change Log: src/main/resources/changelog.xml
-- Ran at: 2/10/16 6:24 PM
-- Against: TEST@jdbc:oracle:thin:@10.86.24.2:1521:claim
-- Liquibase version: 3.4.2
-- *********************************************************************

SET DEFINE OFF;

-- Lock Database
UPDATE DATABASECHANGELOGLOCK SET LOCKED = 1, LOCKEDBY = 'KannanSDTW864', LOCKGRANTED = to_timestamp('2016-02-10 18:24:08.593', 'YYYY-MM-DD HH24:MI:SS.FF') WHERE ID = 1 AND LOCKED = 0;

-- Release Database Lock
UPDATE DATABASECHANGELOGLOCK SET LOCKED = 0, LOCKEDBY = NULL, LOCKGRANTED = NULL WHERE ID = 1;

Entries in the DATABASECHANGELOG table

Please help me to fix the issues.


回答1:


According to Liquibase doc: http://www.liquibase.org/documentation/rollback.html

Tag

Specifying a tag to rollback to will roll back all change-sets that were executed against the target database after the given tag was applied.

But your createTable action is not after the tag "checkpoint", but is marked with this tag itself. If you want to rollback this action you need to have a tagDatabase in separate changeset before createTable.

Also why are you using empty changelog for rollback? It should contains changes that you used for update command (create table, etc).




回答2:


It appears to be working as designed, as far as I can tell. You have an empty changelog table, so no changes have been deployed. Therefore, there are no changes to roll back.



来源:https://stackoverflow.com/questions/35356563/rollback-is-not-working-in-oracle-using-liquibase

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!