将更多变更集添加到liquibase变更日志文件时出现问题



在Liquibase中进行了最近一次更改后,我无法在不导致校验和错误的情况下添加任何其他内容。我不太习惯与Liquibase合作,所以请原谅我的无知。

这是我的最后一个变更集:

-- changeset Conner:492 splitStatements="false" endDelimiter=";" :/
CREATE PROCEDURE dbo.UpdateOrInsertWinningColorsAnswers(@json NVARCHAR(max)) AS
BEGIN
SET NOCOUNT ON  
MERGE INTO WinningColorsAnswer W
USING(
SELECT *
FROM OPENJSON(@json)
WITH(
Id int,
Answer varchar(max),
QuestionId int,
SectionId int,
StudentChallengeMappingId int,
CreatedDate datetime2,
CreatedUser varchar(20),
UpdatedDate datetime2,
UpdatedUser varchar(20),
IsDeleted bit        
)
) as InputJSON (Id,
Answer,
QuestionId,
SectionId,
StudentChallengeMappingId,
CreatedDate,
CreatedUser,
UpdatedDate,
UpdatedUser,
IsDeleted)
ON(W.StudentChallengeMappingId = InputJSON.StudentChallengeMappingId and W.QuestionId = InputJSON.QuestionId)
WHEN MATCHED THEN UPDATE
SET W.Answer = InputJSON.Answer,
W.UpdatedDate = Convert(datetime, InputJSON.UpdatedDate, 104),
W.UpdatedUser = InputJSON.UpdatedUser
WHEN NOT MATCHED THEN
INSERT(Answer,QuestionId,SectionId,StudentChallengeMappingId,CreatedDate,CreatedUser,UpdatedDate,UpdatedUser,IsDeleted)
VALUES(InputJSON.Answer,
InputJSON.QuestionId,
InputJSON.SectionId,
InputJSON.StudentChallengeMappingId,
Convert(datetime, InputJSON.CreatedDate, 104),
InputJSON.CreatedUser,
Convert(datetime, InputJSON.UpdatedDate, 104),
InputJSON.UpdatedUser,
Cast(InputJSON.IsDeleted as bit))
;
END
/

当我这样添加下一个变更集时:

-- changeset Conner:493
-- code down here
--
--
--
--
--

我收到以下错误消息。

运行Liquibase时出现意外错误:验证失败:1个变更集校验和changelog.msql.sql::492::Conner以前是:8:0bde397236550cd1a364241c50171677,但现在是:8:cd9ef9c9a83fda6bd33543b4322bef-

我没有对-- changeset Conner:492进行任何更改,那么是什么原因导致了导致校验和无效的更改?

Liquibase论坛上有一个类似帖子的答案。以下是建议的解决方案:

  1. 运行clear-checksums命令,然后运行update命令。这将清除所有CCD_ 4并在更新期间重新计算它们,这将防止错误
  2. 使用新值将--validCheckSum添加到变更集中。(请参阅:示例变更日志:SQL格式| Liquibase文档(
  3. 更新databasechangelog表,将特定行的md5sum设置为NULL。这将与#1基本相同

参考:

  1. https://forum.liquibase.org/t/how-to-fix-validationfailedexception-in-liquibase-checksum/6780/6

最新更新