WordPressのデータベース移行は、一見簡単そうに思える。データベースをエクスポートして、別の場所にインポートすれば完了、と。しかし実際には、WordPressサイトが最も多く不具合を起こすのはこの移行作業なのだ。.
理由は明確です。WordPressは、PHPオブジェクトをシリアライズしてデータベースに保存します。URLに対して単純な検索置換を行うと、そのシリアライズされたデータが意図せず破損し、サイトが原因不明の不具合を起こしたように見えます。プラグインのアップデートによってデータベーススキーマの移行がトリガーされ、ファイルの復元では元に戻せません。データベースのプレフィックスが間違っていたり、テーブルが欠落していたり、 wp-config.php ファイルが同期していなかったりすると、それぞれ異なるエラーが発生し、原因の方向性が異なります。
このガイドでは、WordPressデータベースの移行が必要となるあらゆるシナリオ、データ損失なしでそれぞれの移行を実行する方法、そして問題が発生した場合によく発生するエラーを修正する方法について説明します。.
WordPressデータベースの移行とは、WordPressデータベースを転送、コピー、または変更するプロセスです。これは、サイトを新しいホストに移行する場合、ドメインを変更する場合、またはステージング環境と本番環境間で変更をデプロイする場合などによく発生します。.
プラグインが新しい機能や性能をサポートするためにデータベースのテーブル、列、または保存データを変更する場合、主要なプラグインのアップデート時にデータベースの移行が自動的に発生することもあります。.
WordPressのアップデートやサイト移転の際に、データ損失、互換性の問題、予期せぬダウンタイムを防ぐためには、両方のタイプの移行方法を理解することが不可欠です。.
WordPressデータベース移行の種類
データベース移行はすべて同じではありません。移行の種類によって、方法、リスク、準備が異なります。.

データベースを新しいホストまたはドメインに移行する
これは最も一般的なシナリオです。 ホスティングプロバイダーを、HTTPからHTTPSに移行したり、新しいドメインでブランドイメージを変更したりする場合です。データベースの内容自体は変わりませんが、データベースに保存されているすべてのURLを新しい場所に合わせて更新する必要があります。
課題:WordPressはURLをデータベース内の複数の場所に保存しており、wp_optionsテーブルやwp_postmetaテーブルにはシリアル化された配列も含まれています。これらのテーブルに対してシリアル化を考慮しない手動の検索置換を行うと、データが意図せず破損してしまう可能性があります。.
ステージングからプロダクションへ
ステージング環境でサイトを構築し、本番環境にデプロイする場合、データベースも一緒に移行する必要があり、ステージング環境のURLはすべて本番環境のURLに置き換える必要があります。開発者がデータベースを更新せずにファイルをデプロイしてしまうことが多いため、これはステージング環境から本番環境への移行で問題が発生する最も一般的な原因の一つです。.
プラグインによってトリガーされるスキーマ移行
プラグインがアップデート中にデータベース構造を変更する場合、それはスキーマ移行、つまりデータベース内のデータだけでなく構造そのものを変更する処理です。WooCommerceのHPOS(高性能注文ストレージ)移行は、その典型的な例です。会員データを新しいテーブル構造に移行する会員管理プラグインも、別の例と言えるでしょう。
これらの移行処理はプラグインの更新プロセスの一部として実行されます。手動でトリガーすることはできません。そのため、本番環境に更新を適用する前に、ステージング環境での準備が必要となります。.
WordPressデータベースの移行を正しく行う必要がありますか?
Seahawkは、WordPressデータベースの移行、ホスティングの移転、ステージング環境から本番環境へのデプロイ、プラグインのアップデート管理などをすべて代行します。データ損失なし。ダウンタイムなし。契約不要。.
データベース移行前に必要なものとは?
コマンドを実行したり、エクスポートをクリックしたりする前に、このリストにあるすべての項目を完了してください。.
完全なデータベースバックアップを 作成してください。phpMyAdmin、WP-CLI、またはホスティングプロバイダのバックアップツールを使用して、現在の環境からMySQLデータベース全体をエクスポートしてください。作業を進める前に、バックアップファイルが開き、データが含まれていることを確認してください。元のデータベースを上書きした後に破損したエクスポートファイルが見つかった場合、ホスティングレベルのバックアップがないと復元できません。
ファイルの完全バックアップ。データベースは、対応するWordPressファイルがないと機能しません。データベースのバックアップと同時に、 WordPressのインストール全体をバックアップしてください。
移行先のwp-config.phpの詳細。 移行先のデータベース名、ユーザー名、パスワード、ホスト名をメモしておいてください。これらは、WordPressファイルをインポートしたデータベースに接続するために必要です。
ステージング環境。 データベースの移行は、本番環境で実行する前に必ずステージング環境でテストする必要があります。これは、ホスト間移行とプラグイン更新スキーマ移行の両方に当てはまります。
PHPバージョンの互換性を確認しました。 異なるPHPバージョンを実行している新しいホストに移行する場合は、移行前にプラグインとテーマが新しいバージョンと互換性があることを確認してください。移行後にPHPバージョンの不一致が発生すると、データベースの問題のように見えるエラーが発生しますが、実際には互換性の問題です。
WordPressデータベースを移行する方法:3つの方法
最適な方法は、技術的な習熟度とデータベースの規模によって異なります。いずれの方法も、以下に説明するように使用すれば、シリアル化されたデータを正しく処理します。.

方法1:移行プラグイン(最も簡単)
移行プラグインは 、エクスポート、インポート、ファイル転送、URL置換を単一のプロセスで処理します。コマンドライン操作の経験がないほとんどのサイトオーナーにとって最適な選択肢です。
推奨プラグイン:
Duplicator Proは 、数ギガバイトまでのデータベースを処理でき、スケジュールされた移行をサポートし、URL置換を自動的に処理するインストーラーファイルを生成します。大規模または複雑なサイトにとって、最も信頼性の高い選択肢です。
All-in-One WP Migrationは、 データベースを含むWordPressインストール全体を含む単一のアーカイブファイルを作成します。無料版ではインポートサイズが512MBに制限されていますが、プレミアム版ではこの制限が解除されます。このプラグインは、インポート時にシリアル化されたデータの置換処理を行います。
WP Migrate (旧称:WP Migrate DB)は、データベースのみの移行や環境間のプッシュ/プルに特化して設計されています。シリアル化されたデータを正しく処理し、選択的なテーブル移行をサポートしています。これは、ステージングプラグインの設定を上書きすることなく、コンテンツデータベースのみを本番環境からステージング環境にプルしたい場合に便利です。
All-in-One WP Migration のステップバイステップガイド:
- ソースサイトにAll-in-One WP Migrationをインストールして有効化してください。
- All-in-One WP Migration > エクスポート に移動
- 「エクスポート先」>「ファイル」を選択
- エクスポートが完了するまで待ってから、.wpress ファイルをダウンロードしてください。
- 移行先のサイトにAll-in-One WP Migrationをインストールしてください。
- All-in-One WP Migration > インポート に移動
- .wpress ファイルをドラッグアンドドロップするか、クリックしてファイルを選択してください。
- プロンプトが表示されたらインポートを確認してください。プラグインは、これにより既存のコンテンツがすべて上書きされることを警告します。
- インポートが完了したら、[設定] > [パーマリンク] に移動し、何も変更せずに [変更を保存] をクリックします。これにより、書き換えルールがクリアされ、移行後に発生するほとんどの 404 エラーが解決されます。
方法2:phpMyAdmin(手動)
phpMyAdminは、移行を完全に制御する必要がある場合、プラグインツールでは処理できない大規模なデータベースを移行する場合、またはWordPressファイルとは独立してデータベースを移行する必要がある場合に最適な方法です。.
データベースのエクスポート:
- ホスティングコントロールパネルから、ソースホスティング環境のphpMyAdminにログインしてください。
- 左側のサイドバーからWordPressデータベースを選択してください。
- 「エクスポート」タブをクリックします。
- カスタムエクスポート方法を選択してください
- すべてのテーブルが選択されていることを確認してください。
- フォーマット固有のオプションで、「DROP TABLE / VIEW / PROCEDURE / FUNCTION / EVENT / TRIGGER ステートメントを追加する」にチェックを入れます。これにより、インポート時に既存のテーブルが重複エントリエラーを引き起こすことなく、適切に上書きされます。
- データ作成オプションで、「完全挿入」と「拡張挿入」にチェックを入れます。
- 「エクスポート」をクリックして、.sql ファイルを保存します。
データベースのインポート:
- ホスティング先の環境でphpMyAdminにログインしてください。
- 宛先データベースを選択または作成する
- テーブルをインポートするをクリックします
- 「ファイルを選択」をクリックして、.sql ファイルを選択してください。
- 「Go」をクリックしてインポートを実行します。
URLを更新しています:
インポート後、データベースに保存されているサイトURLを更新する必要があります。技術的な知識のないユーザーにとって最も簡単な方法は、phpMyAdminのSQLタブで以下のSQLクエリを実行し、old-domain.comとnew-domain.comを実際のドメイン名に置き換えることです。
UPDATE wp_options SET option_value = replace(option_value, 'https://old-domain.com', 'https://new-domain.com') WHERE option_name = 'siteurl' OR option_name = 'home';
SQLのみを使用してすべてのテーブルに対して完全な検索置換を実行しないでください。シリアル化されたデータが破損する可能性があります。完全な置換には、以下のWP-CLIメソッドを使用してください。.
方法3:WP-CLI(技術系ユーザーにとって最も信頼性の高い方法)
WP-CLIはWordPressのコマンドラインインターフェースです。その検索置換コマンドは、デフォルトでシリアル化されたデータを正しく処理するため、WordPressデータベース内のURLを置換する最も信頼性の高い方法です。.
前提条件: サーバーへのSSHアクセスとWP-CLIのインストールが必要です。ほとんどの マネージドWordPressホスティングサービス (Kinsta、 WP Engine、 Cloudwaysなど)では、WP-CLIがデフォルトで利用可能です。
データベースをエクスポートする:
wp db export backup-$(date +%Y%m%d).sql
これにより、データベース全体が日付付きの.sqlファイルとして現在のディレクトリにエクスポートされます。.
データベースを宛先にインポートします。
wp db import backup-20260101.sql
backup-20260101.sql を実際のファイル名に置き換えてください。.
URL置換を実行します。
wp search-replace 'https://old-domain.com' 'https://new-domain.com' --precise --all-tables
–precise フラグは、シリアル化されたデータが正しく処理されることを保証します。–all-tables フラグは、プラグインによって作成されたテーブルを含め、データベース内のすべてのテーブルに置換を適用します。.
交換品を確認する:
wp search-replace 'https://old-domain.com' 'https://new-domain.com' --precise --all-tables --dry-run
–dry-run オプションを指定して実行すると、実際に交換作業を行わずに、交換作業が何回行われるかを確認できます。本番環境での交換作業を行う前に、まずこのオプションを実行して、カウントが正しいことを確認してください。.
キャッシュをクリアしてルールを書き換える:
wpキャッシュのフラッシュ
wp rewrite flush
移行時にシリアル化されたデータをどのように処理すればよいか?
これはWordPressのデータベース移行において最も誤解されやすい部分であり、移行後の不具合の最も一般的な原因でもあります。.
なぜ単純な検索置換操作でWordPressが壊れてしまうのか?
WordPressは一部のデータをPHPのシリアル化形式で保存します。シリアル化された文字列は次のようになります。
a:2:{s:4:"home";s:22:"https://old-domain.com";}
s:22 は「22 文字の文字列」を意味します。old-domain.com を new-domain.com に変更する置換を実行すると、文字列の長さは変わりますが、s:22 のカウントは更新されません。WordPress は 22 文字の文字列を読み取ろうとしますが、長さが異なる文字列が見つかり、エラーが発生します。.
このエラーは、画面が真っ白になったり、ウィジェットエリアが破損したり、移行後にプラグイン設定が空になったりするなどの症状として現れることが多い。シリアル化されたデータに関する情報がないと、原因を特定するのは困難である。.
安全な検索置換を実行する方法
以下のシリアル化対応メソッドのいずれかを使用してください。
WP-CLI(推奨):
wp search-replace 'https://old-domain.com' 'https://new-domain.com' --precise --all-tables
Better Search Replaceプラグイン: WordPressにBetter Search Replaceプラグインをインストールしてください。このプラグインはデフォルトでシリアル化されたデータを処理し、変更を適用する前にプレビューできるドライランオプションを提供します。WP-CLIにアクセスできない場合は、このオプションが最適です。
Interconnect/it Search Replace DB: サーバーのルートディレクトリにアップロードし、ブラウザ経由で実行し、使用後に削除するPHPスクリプトです。シリアル化されたデータを処理し、ライブモードとドライランモードの両方をサポートしています。
検索置換が正しく機能したことを確認する方法は?
交換作業を実行した後、以下の場所を確認してください。
- WordPressダッシュボードの「設定」>「一般」に移動します。WordPressアドレスとサイトアドレスに新しいドメインが表示されていることを確認してください。
- サイトのフロントエンドにアクセスし、ブラウザの開発者コンソールで混合コンテンツ警告(HTTPSドメインでHTTPリソースが読み込まれているなど)がないか確認してください。
- メディアライブラリを確認してください。画像をクリックすると正しいURLが表示されますか?
- Screaming Frogのクロールを実行するか、 Broken Link Checker 、残っている古いドメインのURLをスキャンしてください。
WordPressにおけるプラグインによるデータベース移行
ホスト間移行とは異なり、これらの移行は手動で実行する必要はありません。プラグインの更新プロセスの一部として実行されるため、ステージング環境の準備が他のどの場面よりも重要になります。.
WooCommerceのデータベース移行はどのように行われるのか?
WooCommerceは、注文データの保存方法を大きく変える構造的な変更として、HPOS(High-Performance Order Storage:高性能注文ストレージ)を導入しました。HPOSに移行すると、WooCommerceは専用の新しい注文テーブルを作成し、過去のすべての注文データをそこに移動します。.
この移行は、WooCommerceの設定でHPOSを有効にした場合、または移行が保留中のサイトでWooCommerceを更新した場合に自動的に実行されます。ファイルのロールバックによって元に戻すことはできません。移行が実行されたサイトで一部のプラグインがHPOSと互換性がない場合、それらのプラグインは正しく動作しなくなります。.
準備方法: HPOSを有効にする前、またはWooCommerceをメジャーバージョン間でアップデートする前に、WooCommerce > ステータス > HPOS に移動して互換性チェッカーを実行してください。インストールされているすべてのプラグインと、それがHPOSと互換性があるかどうかが表示されます。移行を実行する前に、互換性の問題を解決してください。
会員制プラグインの移行はどのように行われるのか?
MemberPress 、 Paid Memberships Pro 、 Restrict Content Proなどの会員管理プラグインは、会員レコード、購読データ、取引履歴用に独自のカスタムデータベーステーブルを作成します。これらのプラグインがメジャーバージョンアップされる際、テーブル構造が変更されることがあります。
会員データは標準のWordPressテーブルではなくカスタムテーブルに保存されるため、移行プラグインによっては、デフォルトではこのデータがエクスポートに含まれない場合があります。会員サイトを移行する前に、バックアップツールがカスタムプラグインテーブルをカバーしていることを明示的に確認してください。.
プラグインが移行をトリガーする前に、どのように準備すればよいですか?
- 本番データベースと全く同じステージング環境をセットアップします。
- まずステージング環境でプラグインのアップデートを適用してください。
- アップデート後、ステージング環境で影響を受けるすべての機能(チェックアウト、会員ログイン、サブスクリプション管理)を確認してください。
- ステージングテストが成功したら、トラフィックの少ない時間帯に本番環境にも同じアップデートを適用する。
- 本番環境へのアップデート直前の検証済みバックアップを保持してください。
移行後のデータベースチェックリスト
データベース移行が完了したと誰かに伝える前に、移行後にすべての項目を必ず確認してください。.
- 新しいURLでWordPress管理画面がエラーなく読み込まれる
- 新しいURLではサイトのフロントエンドが正しく読み込まれます。
- すべてのメディアファイルが正しく読み込まれます(画像破損なし)。
- お問い合わせフォームを送信し、確認メールを送信します。
- ユーザーログインはすべてのアカウントタイプで機能します
- WooCommerceの場合:テストチェックアウトを最初から最後まで完了する
- 会員制サイトの場合:会員としてログインし、コンテンツへのアクセス権限を確認してください。
- サイトマップを再送信した後、Google Search Consoleにはインデックスカバレッジエラーが表示されません。
- ブラウザのコンソールに混合コンテンツ警告(HTTPSサイト上のHTTPリソース)は表示されません。
- ページソースやブラウザのネットワークタブに古いドメインURLは表示されません。
- キャッシュプラグインの キャッシュがクリアされました
- パーマリンク構造のフラッシュ:設定 > パーマリンク > 変更を保存
WordPressデータベース移行でよく発生するエラーとその解決方法
エラーを特定する前に、移行処理を再実行しないでください。以下の各エラーメッセージには、何が問題だったのか、そして再試行する前に何を変更すべきかが正確に示されています。.

エラー1062:キーPRIMARYに重複エントリがあります
このエラーは、既にデータが存在する宛先にデータベースをインポートしようとした際に発生します。インポートスクリプトが、既に存在するIDを持つ行を挿入しようとしたために発生します。.
修正方法: インポートする前に、宛先データベース内の既存のテーブルをすべて削除するか、エクスポートファイルに DROP TABLE ステートメントが含まれていることを確認してください。phpMyAdmin でエクスポートする場合は、DROP TABLE ステートメントを含めるオプションをオンにしてください。WP-CLI では、wp db reset –yes を実行してから、wp db import backup.sql を実行してください。
エラー2002:MySQLサーバーに接続できません
このエラーは、WordPressがデータベースサーバーに接続できないことを示しています。通常、移行後にwp-config.phpファイル内のデータベースホスト名が新しいサーバー上の実際のホスト名と一致しない場合に発生します。.
修正方法: wp-config.phpを開き、DB_HOSTの値を確認してください。ほとんどの共有ホスティングでは、 localhost。マネージドWordPressホスティングでは、ホスティングダッシュボードで指定されている特定のホスト名になっている場合があります。DB_HOSTの値を、接続先のサーバーのMySQLホスト名に合わせて更新してください。
エラー1045:ユーザーのアクセスが拒否されました
このエラーは、wp-config.php に記述されているデータベースのユーザー名またはパスワードが、接続先のサーバー上のデータベースの認証情報と一致しないことを意味します。.
修正方法: wp-config.phpを開き、DB_USERとDB_PASSWORDが接続先のサーバー上のデータベースユーザー認証情報と一致していることを確認してください。cPanelでMySQLデータベースに移動し、ユーザーがすべての権限を持つ正しいデータベースに割り当てられていることを確認してください。
WordPressデータベース移行に関する最終的な考察
WordPressのデータベース移行が失敗する主な原因は2つあります。1つは、単純な検索置換によって密かに破損してしまうシリアル化されたデータ、もう1つは、準備が整っていないサイトで更新時に自動的に実行されるプラグインによるスキーマ移行です。.
どちらの問題にも明確な解決策があります。SQL の検索置換ではなく、WP-CLI またはシリアライゼーション対応の検索置換ツールを使用してください。スキーマ移行をトリガーするプラグインの更新を適用する前に、ステージング環境を準備してください。各移行手順の前に検証済みのバックアップを取得し、それに依存する前にテストしてください。.
上記で説明した3つの移行方法は、あらゆるスキルレベルに対応しています。ガイド付きのプロセスを希望する方にはプラグイン、より詳細な制御が必要な方にはphpMyAdmin、コマンドラインアクセスが可能な方にはWP-CLIが適しています。ご自身の環境に最適な方法を選択し、プロジェクトを完了する前に移行後のチェックリストに従ってください。.
経験豊富なチームによるWordPressデータベース移行が必要な場合は、Seahawkにお任せください。Seahawkは、複雑さのレベルを問わず、数百ものWordPressサイトの移行実績があります。.
WordPressデータベース移行に関するよくある質問
WordPressのデータベース移行とは何ですか?
WordPressデータベースの移行とは、WordPressデータベースをあるサーバーから別のサーバーに移動すること(ホスティングの移転、ドメインの変更、ステージング環境から本番環境へのデプロイ時など)と、メジャーバージョンアップ時にプラグインによってトリガーされるスキーマ変更によってデータベース構造を変更することを指します。どちらのタイプもリスクを伴い、事前の準備が必要です。データベースを移動する場合は、シリアライゼーションを考慮したURL置換が必要です。プラグインによる移行の場合は、本番環境でアップデートを実行する前にステージング環境でのテストが必要です。.
WordPressデータベースをデータ損失なしで移行するにはどうすればよいですか?
開始前に検証済みのバックアップを作成してください。シリアル化を考慮した移行方法を使用してください。WP-CLI の検索置換に –precise フラグを使用するか、Better Search Replace プラグイン、または Duplicator Pro や All-in-One WP Migration などの移行プラグインを使用してください。WordPress のシリアル化データが破損する可能性があるため、すべてのテーブルに対して生の SQL 検索置換を実行しないでください。移行後、本番環境に移行する前に、チェックアウト、ログイン、フォーム送信のテストをすべて実行して、機能を確認してください。.
WordPressにおけるシリアライズデータとは何ですか?また、移行においてなぜ重要なのでしょうか?
WordPressは、一部の設定やプラグインデータをPHPのシリアライズされたオブジェクトとしてデータベースに保存します。シリアライズされた文字列には、文字数もフォーマットの一部として含まれています。単純な検索置換でURLを変更すると、URLの長さは変わりますが、文字数は更新されないため、データが破損します。これにより、移行後に画面が真っ白になったり、ウィジェットエリアが空になったり、プラグインの設定が壊れたりといった問題が発生します。シリアライズされたデータを正しく処理するには、WP-CLIまたはシリアライズに対応した検索置換ツールを使用してください。.
WordPressのデータベースをエクスポートするにはどうすればよいですか?
WordPressデータベースをエクスポートするには、phpMyAdmin(データベースに移動し、「エクスポート」をクリックして「カスタム」を選択し、DROP TABLE文を含むすべてのテーブルを選択)、WP-CLIのコマンド「wp db export backup.sql」、またはAll-in-One WP MigrationやDuplicatorなどの移行プラグインを使用します。移行を進める前に、エクスポートしたファイルが開いてデータが含まれていることを必ず確認してください。.
WordPressにおけるプラグインによるデータベース移行とは何ですか?
WooCommerce、会員システム、ページビルダーなどのプラグインがメジャーバージョンアップする際、更新プロセス中にデータベース構造が自動的に変更されることがあります。WooCommerceのHPOS移行はその一例です。これらのスキーマ変更は、プラグインファイルをロールバックしても元に戻すことはできません。更新中にデータベースレベルで行われた変更は、古いプラグインバージョンに戻してもそのまま残ります。そのため、本番環境に移行する前にステージング環境で主要なプラグインアップデートをテストすることが非常に重要です。.
WordPressデータベースの移行後に発生するエラー1045「アクセス拒否」を修正するにはどうすればよいですか?
エラー1045は、wp-config.php内のデータベースユーザー名またはパスワードが、宛先サーバー上のデータベースの認証情報と一致しないことを意味します。wp-config.phpを開き、DB_USERとDB_PASSWORDの値が、新しいサーバーで設定したデータベースの認証情報と一致していることを確認してください。cPanelでMySQLデータベースに移動し、データベースユーザーが存在すること、およびすべての権限を持つ正しいデータベースに割り当てられていることを確認してください。.
WordPressのドメインを変更した後、データベースを更新する必要がありますか?
はい。WordPress は、サイト URL とホーム URL をデータベースの wp_options テーブルに保存します。ドメインを変更した後は、これらの値を更新する必要があります。最も安全な方法は WP-CLI を使用することです。データベースをインポートした後、`wp search-replace 'https://old-domain.com' 'https://new-domain.com' –precise –all-tables` を実行してください。これにより、シリアル化されたデータ内のものも含め、すべての出現箇所が置換されます。置換後、設定 > パーマリンクに移動して「変更を保存」をクリックし、パーマリンクをフラッシュしてください。.