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