首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使RoundhousE与一次脚本对齐,这些脚本由于git行结束正常化而发生了更改?

如何使RoundhousE与一次脚本对齐,这些脚本由于git行结束正常化而发生了更改?
EN

Stack Overflow用户
提问于 2014-04-14 04:39:16
回答 3查看 2.3K关注 0票数 5

我使用RoundhousE来管理数据库迁移,并且,由于遗留的git配置错误,脚本已经被提交给git,并且行尾不一致。我想规范这些行尾,当然,在这样做时,RoundhousE会检测到这些文件的哈希更改。

从RoundhousE的角度来看,我认为这是正确的行为,但我不确定补救的最佳途径。我们已经在制作数据库了。

我有点不知所措,所以到目前为止还没有做多少研究,很乐意在评论中与有经验的人讨论。

备选案文1

首先提交一个更新脚本,将散列的RoundhousE.ScriptsRun表引导到已更改的新一次脚本的正确哈希。然后提交一次脚本。我真的不喜欢这种方法,感觉很脏,很讨厌。

EN

回答 3

Stack Overflow用户

发布于 2016-04-01 12:58:31

有两个可能有用的命令行选项:WarnOnOneTimeScriptChangesBaseline

-w --warnononetimescriptchanges --指示RH执行以前针对数据库运行而不是失败的已更改的一次脚本(DDL/DML在Up文件夹中)。每次重新运行的脚本都会记录一个警告。默认为false。

这个选项将执行您的迁移,这可能不是您想要的。这就是为什么你也应该指定--基线。

-基线-这指示RH为其记录表创建一个insert,但不实际对数据库运行任何内容。如果已经有通过其他方式运行的脚本(在启动新脚本之前),请使用此选项。

我还没有尝试过这一点,但是这两个开关一起应该记录新的脚本散列,而不实际执行任何操作。

票数 4
EN

Stack Overflow用户

发布于 2020-04-21 22:32:57

您想要使用--warnandignoreononetimescriptchanges

WarnAndIgnoreOnOneTimeScriptChanges -指示RH忽略并更新以前针对数据库运行而不是失败的已更改的一次性脚本(DDL/DML在Up文件夹中)的散列。每次重新运行的脚本都会记录一个警告。默认为false。

第一次运行将完成以下输出:

代码语言:javascript
复制
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.

随后的运行将显示“跳过”。

票数 4
EN

Stack Overflow用户

发布于 2022-02-17 10:57:01

尽管其他答案中记录的解决方案是完全正确的,但如果有管道进入云中运行迁移,使用额外的标志运行RoundhousE通常很困难。RoundhouseE跟踪它运行的脚本,并将它的SQL文件内容和散列存储在名为scriptsrunroundhouse模式中的数据库表中。因此,如果您删除有关脚本的行,RoundhouseE就不知道脚本已经运行过。你要做的就是:

  1. 使用SQL工具连接到数据库
  2. 运行以下SQL命令以删除记录:

delete from roundhouse.scriptsrun where script_name = 'my_script_name.sql';

  • 注1:这不是处理生产系统的合适解决方案,但作为开发过程的一部分,效果很好。
  • 注2:如果您以前运行过一个脚本并删除了RoundhousE的记录,那么建议您撤消脚本所执行的操作,以避免出现错误匹配的状态。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23052061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档