web-dev-qa-db-ja.com

簡単な検索と置換を行うためのSQLクエリ

新しいWebサイトを作成するたびに、 "stage.domain-name.com"のようなサブドメインにステージングサイトを最初に作成します。

すべてが正しく動作したら、データベースをエクスポートし、メモ帳++で開き、 "subdomain.domain-name.com"を検索/置換して "domain-name.com"に置き換えます。最後に新しいデータベースにインポートします。ライブサイト用のデータベース。

私の質問は... phpmyadminを使用してデータベース全体でこの単純な検索/置換を実行したい場合、どのSQLクエリを実行する必要があるでしょうか。

-CH

19

あなたのURLが保存されているテーブルはwp_optionsです。サイトのURLを使用している列を更新する必要があります。

UPDATE TABLE wp_options SET option_value = "new domain" WHERE option_name = "siteurl"
UPDATE TABLE wp_options SET option_value = "new domain" WHERE option_name = "home"

値が欠落している可能性がありますが、この検索/置換プロセスをもう一度実行するたびに、更新されるべき値とテーブルを確認して、それらをこのスクリプトに追加することができます。

WordPress Codexには、サイトのURLを変更する方法についての素晴らしいガイドがあります。多分それはあなたにとってさらに便利です: サイトのURLを変更する

13
Fernando Briano

オプション、投稿、投稿コンテンツ、投稿メタを行うのに最適:

UPDATE wp_options SET option_value = replace(option_value, 'http://olddomain.com', 'http://newdomain.com') WHERE option_name = 'home' OR option_name = 'siteurl';

UPDATE wp_posts SET guid = replace(guid, 'http://olddomain.com','http://newdomain.com');

UPDATE wp_posts SET post_content = replace(post_content, 'http://olddomain.com', 'http://newdomain.com');

UPDATE wp_postmeta SET meta_value = replace(meta_value, 'http://olddomain.com', 'http://newdomain.com');

phpMyAdminとMySQLを使用したデータの検索| Packt Publishing。 そして Search RegEx は、すべての投稿とページを検索してGrepに置き換えることができる優れたWPプラグインです。

2015年6月16日更新:単純な検索/置換として、次の文にリンクされたツールを使用する方がはるかに良い上記のデータベースダンプでは、シリアル化されたデータが破損します。参照 interconnectit.com WordPressシリアル化PHP検索置換ツール この方法で、破損しません相互接続スクリプトはどこでもURLを変更するため、データをシリアル化し、投稿コンテンツでRegExを実行する必要はありません。私は常にこのツールを使用してサイトを別のドメインに移行するか、httpからhttpsにグローバルに変更してプラグインなしでSSLを強制し、コンテンツ内のすべてのURLを変更して安全でない要素エラーを防ぎます。

27
markratledge

これは私が使う素晴らしいドロップインスクリプトで、WPがオプションを格納するのに使う直列化された配列とうまく動作します。それが巨大なセキュリティリスクであるのであなたがし終わったらちょうどあなたのリモートサーバからそれを削除するようにしてください。

https://interconnectit.com/products/search-and-replace-for-wordpress-databases/ /

9
lancemonotone

これには WP-CLI を使用します。最も簡単な方法で、シリアル化されたデータを処理するためです。

wp search-replace 'http://example.dev' 'http://example.com' --skip-columns=guid

実際のデータベースを操作する代わりに、変更をSQLファイルに書き込むオプションもあります。

wp search-replace foo bar --export=database.sql

4
Jan Beck

これを行う必要はありません、相対パスを使用できます。

subdomain.soemthing.com/image.jpgの代わりにリンクしている場合 - 例えば/image.jpgを使用してください。

このようにあなたはそもそも問題に直面することはありません。

そうでなければmysqlのupdateステートメントには使用できます

update TABLE_NAME set FIELD_NAME = replace(FIELD_NAME, ‘find this string’, ‘replace found string with this string’);
3
mireille raad

私たちがよく必要としているワードプレスドメインを変更するには、サイトをlocalhostからライブにすることです。

UPDATE wp_posts SET guid = replace(guid, 'http://olddomain.com','http://newdomain.com');
UPDATE wp_posts SET post_content = replace(post_content, 'http://olddomain.com', 'http://newdomain.com');
UPDATE wp_links SET link_url = replace(link_url, 'http://olddomain.com', 'http://newdomain.com');
UPDATE wp_links SET link_image = replace(link_image, 'http://olddomain.com', 'http://newdomain.com');
UPDATE wp_postmeta SET meta_value = replace(meta_value, 'http://olddomain.com', 'http://newdomain.com');
UPDATE wp_usermeta SET meta_value = replace(meta_value, 'http://olddomain.com', 'http://newdomain.com');

/*UPDATE wp_options SET option_value = replace(option_value, 'http://olddomain.com', 'http://newdomain.com') WHERE option_name = 'home' OR option_name = 'siteurl' OR option_name = 'widget_text' OR option_name = 'dashboard_widget_options';*/
UPDATE wp_options SET option_value = replace(option_value, 'http://olddomain.com', 'http://newdomain.com');
  • 必要ならば、WPでデフォルトではない他のテーブルも追加しなければなりません。

UPDATE: Search Replace DB バージョン3.1.0は開発者向けの使いやすいフロントエンドツールです。 PHPシリアル化された文字列またはオブジェクト。

2
Reza Mamun