我正在使用来自liquibase changesets的execute command标签,这个inturn被配置为在oracle即时客户端sql plus中运行sqls。 当我在我的changelogxml上运行liquibase更新一切正常并且liquibase更新是成功的。我也可以看到对表的更改。 但是当我尝试通过在我的sql文件中给出一个语法错误而在更改集中提到失败更新过程时.Liquibase仍然返回liquibase更新sucessfull。我希望它抛出sql错误.sql在toad中单独运行会抛出语法错误。我应该怎么做才能显示错误。?
答案 0 :(得分:0)
Datical创建了一个自定义Liquibase更改标记,该标记使用sqlplus命令行客户端执行SQL。你可能会想到这个问题要复杂得多。
我们必须处理的一些问题:
我们必须做的事情是确保sql文件始终具有某些语句,并且从未有过某些其他语句。这可能包括设置模式,确保唯一的假脱机命令是我们所知道的,脚本有一个'EXIT'命令,并确保每当出现SQL错误时返回退出代码。
在所有情况下,sqlplus可执行文件都不返回退出代码(即本机进程的非零退出代码),而是将错误写入数据库中的错误表。 sqlplus写入错误的表名为sperrorlog
,这可能是您需要查看的内容。
我无法真正了解所有细节,但只知道你想要做的事既不简单也不直接。