gitでMySQLスキーマを維持するための小さなシェルスクリプトのセットを書きたいと思います。自動インクリメント列の gitでスキーマを追跡するためにmysqldumpをクリーンアップ
-- Dump completed on [date and time]
を持つ任意のテーブルの定義の最後に
AUTO_INCREMENT=[some number]
:しかし、一つ核心はmysqldump -uuser -ppass -d devdb > schema.sql
は何スキーマの変更がない場合でも、時間の経過とともに変化する二つのものが含まれていることですend
私は、これらのものがなくてもダンプを得る方法についてはウェブを精査していません。アドバイスできますか?あるいは、別のコマンドまたはツールを使用して、バージョンコントロールで使用するためのクリーンなスキーマを取得する必要がありますか?
編集:私はちょうど--skip-dump-date
オプションを見つけたので、ポイント#2を解決しましたが、私はまだ他のテーブル属性を失うことなく自動インクリメント番号を取り除くことができません。エンジンとデフォルトの文字セット
おそらく、Liquibaseのようなツールを使用します。私が見てきたことから、より良いアプローチは、スキーマの各バージョン間の変更セットを追跡することです。 –
私はLiquibaseについて聞いたことがありませんでしたが、一見したところ、それは有用に見えます。どのようにgitリポジトリとスムーズに統合するのかは明確ではありませんが(別のVCSのように思えます)、私はそれをさらに研究しなければなりません。もちろん、変更が非破壊的である可能性があることを知るのに十分なほど精巧なアルゴリズムであれば、変更セットがうまくいくでしょう。mysqldiffは便利なツールですが、カラム名を変更しても他のものが残っていても同じ、その提案された "変更"は、列を削除して再追加することです! :-o – OsakaWebbie
ああ、私は見る - あなたがしたいことをLiquibaseは推測しようとしない。自分で変更セットを書き込む必要があります(あらかじめ、dev DBを変更させてください)。それは短期的にはもっと仕事のように感じますが、道のりのメリットが分かります。私はまだワークフロー全体(gitリポジトリへの統合を含む)をカバーするチュートリアルは見つけられませんでしたが、私は勉強し続けます。 – OsakaWebbie