Liquibase 脚本失败

Liquibase script fails

我有一个 glassfish 应用程序,它使用 liquibase 创建其数据库模式。我已将相同的应用程序迁移到 Spring Boot。我没有删除数据库模式。当我部署 Spring 应用程序和 liquibase 脚本 运行 时,我得到

java.sql.SQLSyntaxErrorException: ORA-00955: name is already used by an existing object

在执行创建 table 之一的变更集时。

我需要指定 liquibase 脚本中没有任何更改,并且已成功获取数据库更改日志锁。

它不应该跳过所有 table 创建步骤吗?我将同一个应用程序插入同一个数据库。你遇到过这种情况吗?

更新:这是否可能与更新日志文件中存储的 MD5 和有关?所以新应用程序计算的 md5 与旧应用程序计算的 md5 不匹配,脚本被触发,导致明显的异常 ?

非常感谢

我认为您没有校验和差异 - 这会导致不同的错误消息。我认为可能是 DATABASECHANGELOG table 的更改日志路径与 Liquibase 报告的路径不同。

变更集由 3 项标识 - 变更集 ID、作者和路径。当 Liquibase 决定是否应将变更日志中的变更集部署到特定数据库时,它会查看 DATABASECHANGELOG table 并检索该信息,将其与变更日志文件中的信息进行比较,并且不会尝试部署任何匹配的东西。在这种情况下,我认为它检测到路径中的差异并尝试重新部署更改。