2012-10-11 67 views
0

我目前正在嘗試確定如何通過mercurial commit鉤子來應用mysql數據庫補丁。基本上,我有一個傳入的提交鉤子指向我的搜索路徑中的某個腳本。這一切都有效。我真正的問題是如何保留一系列可以應用於每次我拉(傳入的mercurial鉤子),這將不會再次運行時出錯的mysql alter table語句。例如:通過mercurial鉤子應用數據庫補丁

我在表中添加一個新列。所以在我的altertables.sql中添加類似於:

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

我通過自動提交鉤子首次運行此操作。工作正常。下一次我拉,它會嘗試和再次運行,併產生類似的東西:

#1060 - Duplicate column name 'firstLogin' 

反正這個?如果我能夠保留一個包含所有變更的文件,並在每次抽取時應用它,那將是非常棒的。感謝您的任何建議!

回答

1

您需要更改您的腳本,以便它在已應用時不會進行更改。

This答案顯示如何檢查列是否存在。

或者,您可以向數據庫添加一個表以包含腳本檢查和更新的版本號。這可能會更容易,因爲其他選項涉及使用不同的查詢檢查每種類型的更改。