我使用RoundhousE来管理数据库迁移,并且由于糟糕的遗留git配置,脚本已经被提交到具有不一致的行结尾的git。我想规范化这些行结尾,当然,这样做RoundhousE会检测这些文件的哈希变化。
从RoundhousE的角度来看,我接受这是正确的行为,但我不确定最好的补救途径。我们已经在数据库中投入使用。
我有点失去了最好的方法,所以到目前为止没有做太多的研究,很高兴与以前有经验的人一起讨论。
选项#1
首先提交一个UPDATE脚本,将[RoundhousE]。[ScriptsRun]哈希表引导到已更改的新一次性脚本的正确哈希值。然后提交一次性脚本。我真的不喜欢这种做法,感觉很脏,而且很讨厌。
答案 0 :(得分:1)
有两个可能有用的命令行选项:WarnOnOneTimeScriptChanges
与Baseline
结合使用。
-w, - warononetimescriptchanges | WarnOnOneTimeScriptChanges - 指示RH执行先前针对数据库运行而不是失败的已更改的一次性脚本(Up文件夹中的DDL / DML)。将为重新运行的每个脚本记录一条警告。默认为false。
此选项将执行您的迁移,这可能不是您想要的。这就是为什么你还应该指定--baseline。
- 基线| Baseline - 指示RH为其记录表创建插入,但不对数据库实际运行任何内容。如果您已经有通过其他方式运行的脚本(以及在启动新脚本之前),请使用此选项。
我还没试过这个,但是这两个开关一起应该记录新的脚本哈希而不实际执行任何操作。
答案 1 :(得分:1)
您要使用--warnandignoreononetimescriptchanges
WarnAndIgnoreOnOneTimeScriptChanges-指示RH忽略并更新以前针对数据库运行的一次更改脚本(Up文件夹中的DDL / DML)的哈希,而不是失败。对于每个重新运行的脚本,都会记录一条警告。默认为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.
后续运行将显示“已跳过”。