現在私はダンプスクリプトを使用してgitリポジトリにデータベースをコミットします。 --skip-extended-insert --skip-comments --skip-dump-date
は差分が私に何が変わったのかについての公正な考えを与えることができることを意味しますが、私がマージしようとするとそれはすべて落ちます。
WP_SITEURL、WP_HOME、および他のすべてのWordpressストアのURLが別のホストにインポートするときに更新が必要な場所(テスト、ステージング、本番)
誰かがより良い方法を使っていますか?
主な問題:
追加または削除されたものだけを使用して、タイムスタンプ付きの移行を作成するプロセスが理想的です。しかし、それが可能かどうかわからないのですが。
これは2つの可能な解決策で、どちらも実際には一般的なMySQLバージョン管理ツールですが、あなたのワークフローに適応させることができます。
このツールは、データベースで検出された変更から、基本的にSQLスクリプトである「移行」を作成します。これらのスクリプトはローカルディレクトリに格納されているため、現在のVCSにコミットすることができます(たとえばgit)。
それはPHP Webインターフェースを通して使われます。
基本的には以前のツールと似ていますが、これはコマンドラインインターフェースに基づいています。それはJSONファイルを介して設定されます。主な違いは、移行ファイルが自動生成されないことです。
これを以前の類似のものと統合するための懸案事項があるので、それは探すべき何かです。
Wordpressプラグイン
再現可能なワークフローの作成に役立つ可能性のあるいくつかのプラグイン:
私はMYSQLでこれをやっています。
それはすべてのテーブルスキーマとデータをそれら自身のファイルに入れるので、何が変更されたのか簡単に見ることができます。
このスレッドの他のほとんどのソリューションとは異なり、このソリューションはデータを取得します。これはCMSにとって重要です。
このソリューションはツールを一切使用せず、単にコマンドラインスクリプトを使用します。
edit: 私は私の古いコードにインポートの順番が重要なバグがあるのを見つけました。 --compact
フラグをはずすと、バグが修正されます。
for x in `mysql --skip-column-names -u root -ppassword dbname -e 'show tables;'`; do
echo exporting $x
mysqldump -u root -ppassword --skip-add-drop-table --skip-add-locks --skip-disable-keys --skip-set-charset --extended-insert=FALSE --replace --skip-dump-date dbname $x > "./db/$x.sql"
done
古いコード
for x in `mysql --skip-column-names -u root -ppassword dbname -e 'show tables;'`; do
mysqldump -u root -ppassword --compact --extended-insert=FALSE --replace dbname $x > "./db/$x.sql"
done
そしてここにインポートする方法があります
for x in `ls ./db/*.sql`; do
echo importing $x
mysql -pdbpassword dbname --force < $x
done