我使用RoundhousE来管理数据库迁移,并且,由于遗留的git配置错误,脚本已经被提交给git,并且行尾不一致。我想规范这些行尾,当然,在这样做时,RoundhousE会检测到这些文件的哈希更改。
从RoundhousE的角度来看,我认为这是正确的行为,但我不确定补救的最佳途径。我们已经在制作数据库了。
我有点不知所措,所以到目前为止还没有做多少研究,很乐意在评论中与有经验的人讨论。
备选案文1
首先提交一个更新脚本,将散列的RoundhousE.ScriptsRun表引导到已更改的新一次脚本的正确哈希。然后提交一次脚本。我真的不喜欢这种方法,感觉很脏,很讨厌。
发布于 2016-04-01 12:58:31
有两个可能有用的命令行选项:WarnOnOneTimeScriptChanges和Baseline。
-w --warnononetimescriptchanges --指示RH执行以前针对数据库运行而不是失败的已更改的一次脚本(DDL/DML在Up文件夹中)。每次重新运行的脚本都会记录一个警告。默认为false。
这个选项将执行您的迁移,这可能不是您想要的。这就是为什么你也应该指定--基线。
-基线-这指示RH为其记录表创建一个insert,但不实际对数据库运行任何内容。如果已经有通过其他方式运行的脚本(在启动新脚本之前),请使用此选项。
我还没有尝试过这一点,但是这两个开关一起应该记录新的脚本散列,而不实际执行任何操作。
发布于 2020-04-21 22:32:57
您想要使用--warnandignoreononetimescriptchanges
WarnAndIgnoreOnOneTimeScriptChanges -指示RH忽略并更新以前针对数据库运行而不是失败的已更改的一次性脚本(DDL/DML在Up文件夹中)的散列。每次重新运行的脚本都会记录一个警告。默认为false。
第一次运行将完成以下输出:
21-Apr-2020 22:23:52 2019-12-17_1100_SomeScript.sql is a one time script that has changed since it was run. build
21-Apr-2020 22:23:43 BASELINING: Recording 2019-12-17_1100_SomeScript.sql on 10.0.0.14,1433 - DATABASENAME.随后的运行将显示“跳过”。
发布于 2022-02-17 10:57:01
尽管其他答案中记录的解决方案是完全正确的,但如果有管道进入云中运行迁移,使用额外的标志运行RoundhousE通常很困难。RoundhouseE跟踪它运行的脚本,并将它的SQL文件内容和散列存储在名为scriptsrun的roundhouse模式中的数据库表中。因此,如果您删除有关脚本的行,RoundhouseE就不知道脚本已经运行过。你要做的就是:
delete from roundhouse.scriptsrun where script_name = 'my_script_name.sql';
https://stackoverflow.com/questions/23052061
复制相似问题