【发布时间】:2019-08-13 22:10:17
【问题描述】:
我正在 Windows 环境中执行一个 tomcat 应用程序,该应用程序在部署时会在 oracle 数据库上创建/更新数据库架构。为此,我使用的是 Liquibase SDK 3.3.2。所以基本上我调用 SDK 并告诉它从我的 changelog.xml 中进行更新。这部分工作正常。 java类的代码
...
Liquibase liquibase = new Liquibase(CHANGE_LOG,
new ClassLoaderResourceAccessor(getClass().getClassLoader()), db);
liquibase.update("");
问题是,当出现问题并且我从命令行执行回滚时,什么也没有发生。我没有收到任何异常或错误消息。只是一条消息“回滚成功”,但在数据库中根本没有任何变化。现在有趣的是,当我从 cmd 更新我的更改日志文件,然后也从 cmd 进行回滚时,回滚就可以工作了。命令行调用如下所示:
Liquibase --changeLogFile=C:\myProject\src\main\resources\database\master.xml --logLevel=DEBUG rollbackCount 5
我的 liquibase.properties 文件如下所示:
driver: oracle.jdbc.OracleDriver
classpath:ojdbc6.jar
url: jdbc:oracle:thin:@192.168.56.101:1521:orcl
username: myUser
password: mypassword
有人知道为什么会这样吗? SDK和cmd工具有什么不兼容的地方吗?
【问题讨论】:
-
使用“rollbackCountSQL”命令查看将应用的 SQL。
-
您好已经试过了。从 SDK 更新和从命令行回滚没有 SLQ 的相同效果。从命令行更新和从命令行回滚我得到了正确的 SQL