修改实体后 Liquibase 验证失败
Liquibase validation failed after modifying the entity
我想将一个字段的数据类型从字符串更改为日期。所以我在数据库中删除了 table。然后修改了 liquibase 文件和 运行 应用程序。现在它抱怨以下消息。
liquibase.exception.ValidationFailedException:验证失败:
所以在那之后我恢复了 liquibase 文件更改和 运行 应用程序。这次没有错误,但它没有创建 table.
请帮我解决这个问题。
我认为失败的验证是关于校验和的错误。当您修改已执行的变更集并尝试再次执行时,会发生这种情况。
Liquibase 将所有已执行的变更集保存在名为 databasechangelog
的 table 中,因此它可以找出在执行期间可以跳过哪些变更集。
要再次执行变更集,请从table之前删除相应的变更集,然后再次运行 Liquibase。
使用 Liquibase 时,您不应该(通常)在 Liquibase 之外修改数据库 - 主要的例外是如果您是开发自己的私有开发数据库的开发人员。如果您处于那种状态(在您自己的私有数据库上工作),那么当您在 Liquibase 之外修改数据库时(即删除 table),您还需要删除 DATABASECHANGELOG table 中的行对应于 table create 语句,因此当您重新 运行 liquibase update
时,它将重新创建 table。
我想将一个字段的数据类型从字符串更改为日期。所以我在数据库中删除了 table。然后修改了 liquibase 文件和 运行 应用程序。现在它抱怨以下消息。
liquibase.exception.ValidationFailedException:验证失败:
所以在那之后我恢复了 liquibase 文件更改和 运行 应用程序。这次没有错误,但它没有创建 table.
请帮我解决这个问题。
我认为失败的验证是关于校验和的错误。当您修改已执行的变更集并尝试再次执行时,会发生这种情况。
Liquibase 将所有已执行的变更集保存在名为 databasechangelog
的 table 中,因此它可以找出在执行期间可以跳过哪些变更集。
要再次执行变更集,请从table之前删除相应的变更集,然后再次运行 Liquibase。
使用 Liquibase 时,您不应该(通常)在 Liquibase 之外修改数据库 - 主要的例外是如果您是开发自己的私有开发数据库的开发人员。如果您处于那种状态(在您自己的私有数据库上工作),那么当您在 Liquibase 之外修改数据库时(即删除 table),您还需要删除 DATABASECHANGELOG table 中的行对应于 table create 语句,因此当您重新 运行 liquibase update
时,它将重新创建 table。