如何在SQLcl Liquibase中覆盖输出文件?
解决SQLcl中Liquibase导出Apex应用重复生成文件的问题
针对你遇到的SQLcl集成Liquibase时--overwrite-output-file参数无效、重复执行导出会生成新文件的问题,可尝试以下几种解决办法:
提前清理旧输出文件
在执行导出命令前,手动或通过脚本删除之前生成的Apex对象文件。比如在PowerShell中执行清理命令(替换为你的实际输出目录):Remove-Item -Path "D:\projects\RDNA2\db\rdna2-apex\apex-objects\*" -Recurse -Force之后再运行
lb generate-apex-object -applicationid 200 -split命令,就能保证生成的是最新文件且不会重复累积。也可以把清理和导出命令合并成一个批处理脚本,一键执行。改用独立版Liquibase CLI
放弃SQLcl集成的Liquibase,下载独立的Liquibase CLI版本,配置好Oracle JDBC驱动后,直接使用标准Liquibase命令执行导出,此时--overwrite-output-file参数可正常生效。示例命令如下:liquibase generate-apex-object --applicationid=200 --split --overwrite-output-file=true ^ --url=jdbc:oracle:thin:@rdna2 --username=rdna2 --password=your-db-password通过JVM参数强制开启覆盖功能
启动SQLcl时,添加Liquibase的JVM参数来开启输出文件覆盖:sql -Dliquibase.overwriteOutputFile=true rdna2@rdna2进入SQLcl交互环境后,再执行
lb generate-apex-object -applicationid 200 -split命令,此时Liquibase会默认覆盖已存在的输出文件。
内容的提问来源于stack exchange,提问作者Vitaly
相关产品推荐
相关产品推荐

