WordPressをSQLiteからMySQLへ移行する方法

WordPressをSQLiteからMySQLへ移行する方法 [2]ブログ

こんにちは、ひつじ先輩 (@baacash_)です。

WordPressを、SQLiteからMySQLへ移行する方法を書きます。

これまで、Wordpress SQLite Integrationを使ってきた人向けです。

 

SQLiteからMySQLへの移行は、長くWordPressを使うなら避けられません。

しかし残念ながら、移行作業はかなり大変。

 

わたしは時間に追われる中、数々のエラーに悩まされることになりました。

この記事では移行の流れに加え、わたしが遭遇したエラーと対策をまとめています。

 

お役に立てれば幸いです。

SQLiteから移行すべき理由

1MySQLに移行した理由

WordPressは本来、MySQLで動きます。

しかし、WordPress SQLite IntegrationというプラグインでSQLite運用できます。

 

このプラグインはもう更新されておらず、ダウンロードもできなくなっています。

2019年12月追記

 

わたしもサーバ代の節約のため、SQLite運用していましたがおすすめしません。

理由は、

  • 管理画面・ページ表示が遅い
  • ウェブで見つかる情報がMySQL前提

からです。

 

今はもう更新されていないプラグインです。

セキュリティ面を考えても、MySQLへ移行すべきです。

 

MySQLへの移行

2移行の詳細

移行前。

WordPressテーマはCocoonで、プラグイン「Wordpress SQLite Integration」を使用。

移行後は、

となりました。

 

作業の流れは

  1. 旧WordPressデータのエクスポート
  2. 移行前のバックアップ
  3. 新WordPressのインストール
  4. 新WordPressへデータをインポート
  5. プラグイン・テーマを移行

の5ステップです。

 

MySQLを使うため、同じサーバ契約をアップグレード。

新しくWordPressをもう1つインストールして、データをインポートしました。

 

1.旧WordPressのエクスポート

データベースをエクスポートします。

データベースのエクスポート

XMLファイルが得られます。

 

2.移行前のバックアップ

WordPressのバックアップ

プラグインのBackWPupを使ってバックアップしました。

 

サーバ内でも、別ディレクトリに旧「WordPress」フォルダのコピー(SQLite版)を作りました。

新しいWordPress(MySQL)で上書きされるかもしれないと思ったからですが、杞憂でした。

 

FFFTPでフォルダを下層へのコピーするのは、この記事の方法でできる。

 

その他のバックアップ

移行で、カテゴリとカテゴリのスラッグがうまく引き継がれないことがあります。

そこで最悪、手作業で直せるようにカテゴリ(およびスラッグ)の状態をスクショ

  • メニュー
  • ウィジェット

の状態もスクショしました。

 

テーマの設定もエクスポートできるならバックアップしましょう。

Cocoonの場合は、この画面からできます。

1Cocoonバックアップ

 

3.新WordPressのインストール

プランを、MySQLが使えるライトプランに変更。

移行先となるWordPress(MySQL版)をインストールします。

WordPressのインストール

「承諾する」にチェック。

「インストール」をクリック。

 

4.新WordPressへインポート

ダッシュボードにログインできたら、インポート。

WordPressへインポート

「ツール」⇒「インポート」⇒「WordPress」を選択。
引用元:WordPress SQLiteからMySQLへ移行 in CORESERVER Part.1

 

WordPressへインポート2

先ほどエクスポートしておいたデータベース(XMLファイル)を選択します。

 

添付ファイル

添付ファイルをダウンロードしてインポート」してください。

 

エラー

5エラーが発生

アップロードしたファイルは php.ini で定義された upload_max_filesize を超過しています。

 

以下、ロリポップでの解決方法。

アップロードしたファイルは php.ini で定義された upload_max_filesize を超過しています。

設定をクリック。

 

upload_max_filesize

upload_max_filesizeを、大きな値に変えます。

エックスサーバーの場合は、こちらを見てください。

 

エラー2

ファイルが空のようです。中身のあるファイルをアップロードしてください。

エラーが発生しました。
ファイルが空のようです。中身のあるファイルをアップロードしてください。
このエラーはphp.ini ファイルでアップロードができない設定になっているか、post_max_size が upload_max_filesize よりも小さく設定されているために発生している可能性もあります。

このエラーがでましたが、インポートは一部できているようです。

 

3回やって、

ひつじ
ひつじ

すべて入った!

と思いました。(入ってない)

 

ひつじ
ひつじ

実際は、ここで大量の画像のコピーに失敗

画像のコピーは、後半で書く方法で別に行うことになります。

記事・カテゴリー・タグは移行できました。

 

5.プラグイン・テーマを移行

プラグインの移行

FFFTPで旧WordPressからプラグインをコピーします。

「wp-content」の「plugins」というフォルダです。

 

FFFTPエラー

「ダウンロードできませんでした」とエラーがでました。

 

FFFTPで、

「高度」タブをクリックします。
設定項目のうち、「可能であればMLSDコマンドで一覧を取得」のチェックを外します。
続いて「暗号化」タブをクリックします。
ここでは、「暗号化なしで接続を許可」のみチェックを入れた状態にします。
(引用元:FFFTPで頻繁に起きるファイル転送エラーを回避する方法

をすると解決します。

 

移行に失敗したり、利用時にエラーが出たプラグインは以下の3つです。

  1. calculated fields form
  2. All in one SEO
  3. BackWPup

 

1.calculated fields form

calculated fields formは、計算フォームを記事に貼るプラグイン。

無料版では、コピーしてもデータが移行できないようになっています。

 

ひつじ
ひつじ

がんばって作った計算フォームが消え、1記事消しました。

 

2.All in one SEO

All in one SEO のサイトマップ機能、が初期設定に戻ります。

noindexになっているURLについては送信しないよう、設定しておきましょう。

 

これをしないと後日、Search Consoleで

送信されたURLにnoindexタグが追加されています

のエラーがでます。

実害はない

 

3.BackWPup

WordPressをバックアップするプラグイン。

試しに回すとエラーがでました。

 

サーバ上のinstall.phpを削除します。wp-adminフォルダの中にあります。
(引用元:【WordPress】install.phpが原因でBackWPupに警告が出る場合の対処法

で解決。

 

テーマの移行

Cocoonフォルダも、FFFTPでコピーしました。

ひつじ
ひつじ

吹き出しデータが引き継げるかも

と、旧WordPressからコピーしましたが、ダメでした。

既に記事に貼った吹き出しは、ちゃんと表示されます。

 

事前にエクスポートした、Cocoonの設定ファイルを入力します。

Cocoonリストア

今度は、リストアの方です。

 

Cocoonの場合はこれで、

  • Google アナリティクス
  • Search Console
  • Google AdSense

との連携が復活します。

 

WordPressの設定

記事

記事のスラッグに、日付が追加されていました。

パーマリンク設定

パーマリンク設定を「投稿名」に変更。

すべての記事のスラッグから、日付表記が消えました。

 

カテゴリー

順序・親子関係が消えていました。

 

プラグイン、Taxonomy Orderで順序を修正。

親子関係は手作業で修正。

 

ウィジェット・メニュー

取っておいたスクショを頼りにウィジェット・メニューを再表示。

 

メニューは、同じデータが2重に入ってめちゃくちゃに。

ひつじ
ひつじ

多分3回インポートしたせいです。

 

ウィジェットは移行できておらず、最初から設定しなおしです。

 

Favicon

サイトを開いたときのタブに表示されるアイコン。

こちらの方法で再設定しました。

 

サブタイトル

サイトのサブタイトルを再設定。

「設定」→「一般」。

 

プロフィール・SNS情報

プロフィールも消えています。

SNSの情報も再設定。

「ユーザー」→「あなたのプロフィール」。

 

投稿SNS設定

記事を公開したときに、自動でSNSに投稿する設定。

「設定」→「共有」。

 

セキュリティ関連

  • ログインIDを隠す
  • WordPressのパスワードを複雑化
  • プラグインでログイン試行回数制限(Login LockDown)
  • レンタルサーバのパスワード複雑化
  • htaccessを設置してサーバ上のファイルへのアクセス制限

などの対応を行いました。

 

セキュリティ関連の設定については、こちらの記事で書きました。

WordPressのセキュリティリスク対策! 不正ログインされる前に
WordPressでは、セキュリティを自分で確保する。月間5万PV規模の当ブログで行っているリスク対策を6つ紹介。個人・初心者でも出来る内容。WordPressを更新する・IDを隠す・パスワードを複雑に・ログイン試行を制限など。

ぜひ、読んでみてください。

 

画像の移行に失敗

画像が移行失敗

設定を一通り終えたあと、画像が消えている記事が大量にあることに気付きました。

もういろいろ設定しちゃったので、インポートからやり直したくない。

 

起きていることは、

  1. 画像が新しいWordPressフォルダにコピーされていない
  2. 記事内の画像リンクのURLが間違っている

の2パターンのどちらか。

もしくは両方でした。

 

まずは新WordPressの画像フォルダに、旧画像フォルダからすべてコピー。

今回も、FFFTPを使いました。

 

さらに、記事内の画像リンクを直していきます。

Search Regexというプラグインを使いました。

 

すべての記事内の

https://baacash.com/wordpress/wp-content/

https://baacash.com/wp-content/

へ書き換え。

 

これで、画像もちゃんと表示されるようになりました。

 

SQLiteからMySQLへの移行

まとめます。

 

WordPress SQLite Integrationはもう、アップデートされていない。

MySQLに移行する必要がある。

 

流れは

  1. 旧WordPressデータのエクスポート
  2. 移行前のバックアップ
  3. 新WordPressのインストール
  4. 新WordPressへデータをインポート
  5. プラグイン・テーマを移行

の5ステップ。

 

タイトルとURLをコピーしました