0

私は自分のラップトップで開発を行い、次にgitを使用してサーバーにプッシュすることで変更をデプロイすることにより、WordPressサイトで作業しています。これはファイルに最適です。データベースへのコンテンツの変更についても同じことをしたいと思います。

問題を解決するための最初の反復では、gitフックを使用してmysqldump、コミット前を使用してデータベースをダンプし、チェックアウト後にダンプを復元しました。これは機能しますが、毎回データベース全体を削除して再作成します。WordPressは、販売された製品の記録など、保持したいデータベースにも自動的に変更を加えるため、これは問題です。したがって、チェックアウトのたびにすべてを削除して復元したくありません。

git diff HEAD^より良い解決策は、コミット中にデータベースをダンプし続け、チェックアウトには、の出力を読み取り、にフィードされたINSERTおよびDELETESQLステートメントに変換する新しいツールを使用することだと思いますmysql。そうすれば、他の人(WordPressなど)によって行われた変更を保持しながら、データベースに私の変更を段階的にパッチすることができます。例:

git diff:

 (83,NULL,550,'TI-99/4A','',0,0,0,0,'',0,0,0),
-(85,NULL,2000,'Banana Jr. 6000','',0,0,0,0,'',0,0,0),
+(85,NULL,2000,'Banana Jr. 6000 (now with tint control!)','',0,0,0,0,'',0,0,0),
 (88,NULL,150,'Symbolics 3645','',0,0,0,0,'',0,0,0),

SQLに変換:

DELETE FROM `wp_yak_product` WHERE `post_id`='85';
INSERT INTO `wp_yak_product` VALUES (85,NULL,2000,'Banana Jr. 6000 (now with tint control!)','',0,0,0,0,'',0,0,0);

私は周りを検索しましたが、このようなものは見つかりませんでした。自分で書くことを考えています。

このようなものはありますか?これは良い考えですか、それとも悪い考えですか?

4

2 に答える 2

0

私の知る限り、そのタイプのツールは存在しません。同様の出力を生成するために私が知っている最良のオプションは、MySQLWorkbenchの「モデルの同期」機能を使用することです。

That said, I would recommend tracking the changes that you make in your development database in a SQL file, checked into git, which can be executed on your production server.

于 2012-10-25T02:55:18.390 に答える
0

I thought of a possible approach:

I dump the database into a different file for each table:

wp_commentmeta.sql
wp_comments.sql
wp_links.sql

etc.

Perhaps I could separate the tables into categories of content vs. bookkeeping, like the distinction between the usr and var directories in Unix, and add the bookkeeping tables to my .gitignore so they're not clobbered when I update the content.

于 2012-10-25T15:45:29.633 に答える