gpt4 book ai didi

mysql - 更新到 3.2.3 时的 liquibase 变更集

转载 作者:行者123 更新时间:2023-11-29 06:23:26 25 4
gpt4 key购买 nike

我们在我们的 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 部署在我们无权访问的客户服务器。

这是一个变更集的示例,其校验和无法将 liquibase 更新到 3.2.0 之后的任何版本。

<changeSet author="xxxxx" id="16042015">
<preConditions 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) 我们可以创建一个新的变更集文件,在任何其他文件之前运行,其中包含一个变更集,该变更集将在更新开始之前将所有校验和设置为空,以首先阻止错误发生。这远非理想,因为我们不再能确定其他陈述没有被真正改变。

2) 告诉客户执行一些 SQL 语句以将相关的变更集校验和设置为空 - 这也远非理想,因为我们的许多客户不精通 MySQL,可能会搞砸。

3) 根本不要更新 liquibase 并坚持使用最新的 3.1 版本 - 同样,不理想

谢谢!理查德

最佳答案

最简单的选择是使用 <validCheckSum>问题变更集中的标签。这将让您列​​出基于先前版本逻辑的特定校验和。

关于mysql - 更新到 3.2.3 时的 liquibase 变更集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32306707/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com