我们在webapp中使用liquibase 3.0.8已经有一段时间了,数据库更新是由Spring-liquibase bean在应用程序启动时应用的。我们决定从3.1、3.1.1、3.2.0到3.2.3,逐步更新我们的开发数据库,此时更新失败,出现校验和验证错误。我们尝试恢复到3.2.0,但得到了一组不同的校验和错误。我还尝试从3.0.8直接转到3.4.1(编写时的当前版本),并得到相同的校验和错误,
我从liquibase发布说明中了解到3.2.0中有一个错误,它计算了不正确的校验和,但我不能选择在生产数据库中将受影响的校验和设置为NULL,因为我们的webapp部署在我们无法访问的客户服务器上。
<changeSet author="xxxxx" id="16042015">
<preCondithtml" target="_blank">ions onFail="MARK_RAN">
<sqlCheck expectedResult="0">select count(*) from Organisation</sqlCheck>
</preConditions>
<comment>Add Organisation table</comment>
<loadData tableName="Organisation" file="sqlUpdates/data/organisations.csv">
<column name="id" type="NUMERIC" />
<column name="title" type="STRING"/>
<column name="approved" type="NUMERIC"/>
</loadData>
如果有任何关于处理这一问题的最佳方法的建议,我将不胜感激。以下是我们目前的想法,所有这些想法都有显著的缺点:
1)我们可以创建一个新的变更集文件,在其他语句之前运行,包含一个变更集,该变更集将在更新开始前将所有校验和设置为null,以首先阻止错误发生。这远不理想,因为我们不能再确定其他语句是否真的被修改了。
2)告诉客户执行一些SQL语句,将相关的变更集校验和设置为NULL--这也远非理想,因为我们的许多客户并不精通MySQL,可能会搞砸一些事情。
最简单的选择是在问题变更集中使用
标记。这将允许您列出基于先前版本逻辑的特定校验和。
我们使用liquibase对数据库进行源代码控制。最初,我们从Postgres开始,创建了数据类型为特定于Postgres的列的变更集。 例如,我们有一个变更集,它创建了具有“JSON”类型字段的表。现在,我们想转移到其他数据库。因此,当我们针对另一个数据库运行变更集时,它无法创建表。我尝试添加“failOnError=false”。但是,后面的变更集失败,因为该表不存在。 您能建议如何重构旧的变
我决定在 Postgresql 的 Java 项目中使用 liquibase,所以我使用 maven goal 创建了初始变更集。现在它正在毫无问题地工作。 我正在寻找的是,在我对数据库进行了更改(比如从RDBMS客户端)之后,是否有任何命令可以分析更改日志和数据库状态,以根据我的更改生成更改集并将其附加到更改集xml文件中?
问题内容: 在liquibase中是否可以创建Java代码更改集(即提供一个Java类,该类将接收JDBC连接并在数据库中执行一些更改)? (我知道飞行路线具有这种功能) 问题答案: 是的,有这样的功能。您可以创建一个: 该类必须实现接口。
我想在changelog文件中使用以下变更集标记数据库,以便将来回滚。当我应用这个变更集时,我在databasechangelog中注意到,前面的变更集也用标记更新了。 changelog文件中的变更集 下面是从databasechangelog表中提取的内容,function51是上一次运行的变更集 有人遇到过吗?我使用的是Liquibase 3.1.1 多谢了。
我试图从现有数据库(MySQL)中使用liquibase(3.5.5)。 > C: /液化酶-3.5.5/liquibase。bat—驱动程序=com。mysql。jdbc。驱动程序^--classpath=C:/Libraries/mysql-connector-java-5.1.37-bin。jar^--changeLogFile=db。变更日志。xml^--url=“jdbc:mysql:/
在生产中,数据库用液基changelog.yaml更新,数据库更新成功。 我们对数据库模式进行了一些更改(作为几个增强功能的一部分),例如创建新表、更改表列和创建约束等。 有没有办法使用最新的数据库架构更改自动更新 changelog.yaml?(需要附加到现有的 YAML 文件中,而不是从 SCRACH 重新创建。 因此对生产过渡数据的影响很小)