gpt4 book ai didi

flyway - 校验和概念的含义

转载 作者:行者123 更新时间:2023-12-04 13:57:13 24 4
gpt4 key购买 nike

正在学习Flyway迁移工具,对的概念不是很清楚校验和 .有人能解释一下是什么吗?它是如何计算的,或者如何更改?

我明白修复命令重新计算校验和,我不明白它有什么不同。

谢谢!

最佳答案

Flyway 中的校验和字段构成验证机制的一部分,确保迁移脚本自应用到数据库后未更改。这将保证您的应用程序的所有实例都具有相同的数据库结构(内容)。您可以关闭验证,但我不建议您这样做。回答你的问题:

What is?



只需谷歌什么是校验和。 Wikipedia

How is it calculated?



对于 SQL 迁移,Flyway 使用 CRC32 类来计算校验和。具体代码见下文。

How can it be changed?



一旦您迁移的二进制内容被修改,迁移的校验和将被更改。如果您想在需要计算新版本迁移文件的校验和时更改 DB 中的校验和字段,然后更改 DB 中的值。但是,我不建议这样做。您不应该这样做,而您想要更改它的事实可能表明您做错了什么。无论如何,校验和的计算代码非常简单(由 Flyway 源代码提供):

        /**
* Calculates the checksum of this string.
*
* @param str The string to calculate the checksum for.
* @return The crc-32 checksum of the bytes.
*/
/* private -> for testing */
static int calculateChecksum(Resource resource, String str) {
final CRC32 crc32 = new CRC32();

BufferedReader bufferedReader = new BufferedReader(new StringReader(str));
try {
String line;
while ((line = bufferedReader.readLine()) != null) {
crc32.update(line.getBytes("UTF-8"));
}
} catch (IOException e) {
String message = "Unable to calculate checksum";
if (resource != null) {
message += " for " + resource.getLocation() + " (" + resource.getLocationOnDisk() + ")";
}
throw new FlywayException(message, e);
}

return (int) crc32.getValue();
}

关于flyway - 校验和概念的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43267202/

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