質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Q&A

1回答

813閲覧

WordPressのDBを手動で置換する方法 (Search Replace DB不使用で)

d04062

総合スコア111

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

0グッド

0クリップ

投稿2018/12/19 00:36

WordPressのDBをエディタで手動で置換したいのですが、

(1)DBがある程度の容量の場合(数百MBなど)、WordPressのプラグインではインポートもしくはエクスポートに失敗することがある(失敗したのにワーニングが出ないことがある)

(2)色々なサイトで、Search Replace DBで置換するのが推奨とのことなのですが、
DB自体に多少不具合がある場合(例えば、プライマリーキーが無い部分がある等)、
正常に置換できない、もしくは、数千時間という時間がかかってしまうことがある。
これ自体は改善(修正)すべき点なのですが、まずインポートしたい。

といったことから、エディタで原始的だけど信頼できる方法(手作業を間違わなければ)を覚えておければと考えました。

また、(大容量のSQLから) シリアライズされている部分を特定するにはどうしたら良いのか、
もしくは至る部分がシリアライズされていて1個ずつ特定していのは非常大変であったりするのか、

アドバイスいただけますと幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yoorwm

2018/12/19 01:58

意味が分からない箇所とかあったのでちょっと調べてみたのですが、ドメインを変えたいとかそんな感じでデータベース内のデータを書き換えたい、というような事ですよね? mysqldump使えばいいだけの話なのですが、ターミナルでサーバにつないで作業出来たりしますか?
d04062

2018/12/19 02:16

ありがとうございます。 はい、ドメインを書き換えるために、DBを置換したいと思っております。 DBのエクスポートの際にWindowsからSSHで、mysqldumpというコマンドを使用したのですが、そちらのことですよね。 (SSHはほとんど使いこなせておらず、ネットで検索し、ただ入力した程度です)、 対象のコマンドの説明が記載されているページなど、教えていただけますでしょうか。
guest

回答1

0

お使いの WordPress の環境がわかりませんが、プラグインを使わずにと言うことなので、

WP-CLI の「search-replace」コマンドは、どうでしょうか?

wp search-replace 'old.example.com' 'new.example.jp' --skip-columns=guid --dry-run

--dry-run を指定して実行している間は、各テーブルで何件見つかったかを表示するだけで、データベースは変更されないので、一度試してみると良いと思います。(変更するときは、コマンドの最後の--dry-runを外す)

インストール直後の WordPress の場合、こんな感じです。

$ wp search-replace 'old.example.com' 'new.example.jp' --skip-columns=guid --dry-run +------------------+-----------------------+--------------+------+ | Table | Column | Replacements | Type | +------------------+-----------------------+--------------+------+ | wp_commentmeta | meta_key | 0 | SQL | | wp_commentmeta | meta_value | 0 | SQL | | wp_comments | comment_author | 0 | SQL | | wp_comments | comment_author_email | 0 | SQL | | wp_comments | comment_author_url | 0 | SQL | | wp_comments | comment_author_IP | 0 | SQL | | wp_comments | comment_content | 0 | SQL | | wp_links | link_notes | 0 | SQL | | wp_links | link_rss | 0 | SQL | | wp_options | option_name | 0 | SQL | | wp_options | option_value | 2 | PHP | | wp_options | autoload | 0 | SQL | | wp_postmeta | meta_key | 0 | SQL | | wp_postmeta | meta_value | 0 | SQL | | wp_posts | post_content | 2 | SQL | | wp_posts | post_title | 0 | SQL | | wp_posts | post_excerpt | 0 | SQL | | wp_posts | post_status | 0 | SQL | | wp_posts | comment_status | 0 | SQL | | wp_posts | ping_status | 0 | SQL | | wp_posts | post_password | 0 | SQL | | wp_posts | post_name | 0 | SQL | | wp_posts | to_ping | 0 | SQL | | wp_posts | pinged | 0 | SQL | | wp_posts | post_content_filtered | 0 | SQL | | wp_posts | post_type | 0 | SQL | | wp_posts | post_mime_type | 0 | SQL | | wp_term_taxonomy | taxonomy | 0 | SQL | | wp_term_taxonomy | description | 0 | SQL | | wp_termmeta | meta_key | 0 | SQL | | wp_termmeta | meta_value | 0 | SQL | | wp_terms | name | 0 | SQL | | wp_terms | slug | 0 | SQL | | wp_usermeta | meta_key | 0 | SQL | | wp_usermeta | meta_value | 0 | PHP | | wp_users | user_login | 0 | SQL | | wp_users | user_nicename | 0 | SQL | | wp_users | user_email | 0 | SQL | | wp_users | user_url | 0 | SQL | | wp_users | user_activation_key | 0 | SQL | | wp_users | display_name | 0 | SQL | +------------------+-----------------------+--------------+------+ Success: 4 replacements to be made.

なお、独自のデータベースを作成するプラグインやテーマを使っている場合は、独自に作成したデータベースは、デフォルトでは置換されません。

状況に合わせて、--all-tables-with-prefix--all-tables を指定することで置換されます。


これもダメで、他の方法だと 「Search Replace DB」や「wp search-replace」がやっている内容を一つずつ人手で処理することになると思います。

  • phpMySQLAdmin 等のツールで、一つずつ置換/編集する。
  • mysqldump コマンドでダンプしたファイルをテキストエディタで、一つずつ置換。
  • mysql コマンドラインからSQLで、一つずつ置換。

等の方法で、できなくはありませんが、PHPのシリアライズ問題やGUID 問題があるので一括での置換は難しいと思います。

GUID については、サイト URL の変更#GUID についての重要事項 - WordPress Codex 日本語版 を読んで、問題や影響を理解した上で実行してください。

投稿2018/12/21 02:18

CHERRY

総合スコア25234

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問