我正在尝试在命令行中对oracle数据库运行liquibase更新,它无法识别已执行的更改集,并且它尝试从更改日志文件的开头开始更新
java -jar liquibase.jar --driver=oracle.jdbc.driver.OracleDriver --classpath=ojdbc14-11.2.0.3.0.jar --changeLogFile=ParentDBChangeLog.xml --url="jdbc:oracle:thin:@172.25.XX.XXX:1521:ora11g" --username=xxxx --password=xxxxx update
从尝试执行的第一个更改集中获取失败,我得到的错误是
错误:java.sql.SQLSyntaxErrorException:ORA-00955:名称已被现有对象使用
我如何解决此问题
答案 0 :(得分:0)
您应该检查数据库是否仍然包含DATABASECHANGELOG
和DATABASECHANGELOGLOCK
表并且它们已正确填充(DATABASECHANGELOG
应该为每个变更集提供一行数据应用于数据库,ID
,AUTHOR
和FILENAME
列应与changelog.xml中的值匹配)。
我见过很多善意的DBA看到这些表,没有认识到它们是什么,并删除它们。我也看到有人开始介绍Liquibase的情况,但不是每个人都知道这一点,并继续使用alrady用于管理模式更改的任何进程,并且该进程删除或更改这些表。