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 に答える