wordpressリストア時に遭遇したmysqlエラー・失敗まとめ

wordpressのバックアップ・リストアテスト時に遭遇したmysqlエラーをまとめて紹介します。
今回試したのは、wordpressのデータベースバックアップとしては

  • phpMyadminエクスポート(MySQL5.5.38、phpMyAdmin3.3.10.5)

データベースのリストア先には(別環境)

  • mysqlコマンド(MySQL5.5.46)

で実行するテストをしました。

image

mysqlコマンドによるデータインポートコマンド

今回リストアに使用したmysqlコマンドは以下のように実行しました

mysql -u aws -p wordpress < export.sql

上記は、「aws」というデーターベースユーザーで
「wordpress」というデータベースに、phpMyAdminでエクスポートした「export.sql」をインポートする意味です。
この方法で実施し、遭遇したエラーを紹介します。

ERROR 1062 (23000) at line 1422490: Duplicate entry '1' for key 'PRIMARY'

上記エラーメッセージが出力され、データがインポートできませんでした。
もう一度実行したら以下のようにエントリー番号が変わりました

ERROR 1062 (23000) at line 42: Duplicate entry '107160' for key 'PRIMARY'

image

これらは重複したプライマリキーがあるというメッセージです。
今回インポートしたデータベース(リストアしたデータベース)に既にデータがあった(既にwordpress記事が一件あった)ために発生しました。
phpMyAdminからのエクスポート時に、データベース上のテーブルを一度削除してから登録しなおすようなオプションを加えましょう。

image

  • 「DROP TABLE / VIEW / PROCEDURE / FUNCTION / EVENT を追加」にチェックを入れます

※ その他のオプションは初期設定のままです

ERROR 2006 (HY000) at line 1427195: MySQL server has gone away

image

このメッセージは何回実行しても変わりませんでした。
phpMyAdminのエクスポート出力で

  • 長い INSERT 文を作成する
  • 作成するクエリの最大長

を変えてもやはり「MySQL server has gone away」エラーでデータが取り込めませんでした。

結果的に、リストア先のmysqlサーバー設定を変更することで「MySQL server has gone away」が解消されました

sudo vi /etc/my.cnf

my.cnfを開き「max_allowed_packet = 32M」設定を入れ保存します

image

mysqldサービスを再起動します。

sudo service mysqld restart

これで無事にデータベースのデータをインポートできました!

image

wordpress管理画面にログインできない。バックアップ先URLにリダイレクトされてしまう

image

wordpress管理画面にログインしようとしたところ、バックアップ元のURLに転送されてしまい、リストア先のURLにログインできなくなりました。
データベースのデータをインポートした影響です(データベース内にURLデータもあるということです)。

※ 今回試した環境は、バックアップ先とリストア先が別々のURLである環境です

sudo vi /var/www/html/wp-config.php

wp-config.phpを修正し、URLに関してはデータベース情報を見ないような優先設定を入れます。

image

define( 'WP_SITEURL', '<リストア先のURL>' );
define( 'WP_HOME', '<リストア先のURL>' );

これでwordpress管理画面にログインできるようになりました。

image

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です