0

我目前正在尝试确定如何通过 mercurial 提交挂钩应用 mysql 数据库补丁。基本上,我有一个传入的提交钩子指向我的搜索路径中的某个脚本。这一切都有效。我真正的问题是如何保留一系列 mysql alter table 语句,这些语句可以在我每次拉取时应用(传入的 mercurial 钩子),再次运行时不会出错。例如:

我在表中添加了一个新列。因此,在我的 altertables.sql 中,我添加了如下内容:

ALTER TABLE `thecompany_tbl` ADD `firstLogin` INT NOT NULL DEFAULT '1';

我第一次通过自动提交挂钩运行它。工作正常。下次我拉动时,它会再次尝试运行它,并产生如下内容:

#1060 - Duplicate column name 'firstLogin'

无论如何围绕这个?如果我可以保留一个包含所有更改的文件,然后在每次拉取时应用它,那就太好了。感谢您的任何建议!

4

1 回答 1

1

您需要更改您的脚本,以便它不会在已应用的情况下进行更改。

这个答案显示了如何检查列是否存在。

或者,您可以向数据库添加一个表以包含脚本检查和更新的版本号。这可能更容易,因为另一个选项涉及使用不同的查询检查每种类型的更改。

于 2012-10-12T09:26:13.853 回答