phpMyAdminとWordPressでデータベースの移植に失敗した時の記録

2023.06.03

この技術ブログ作った際に、あらかじめ作っていたローカルのデータベースをXAMPPのphpMyAdminにエクスポート・インポートしようとしたが、それぞれにエラーが発生した。

自身でDB設定を行う場合は、どうやら設定ファイルを少しいじらなければならない様で、意外と工数がかかった。

その修正内容を今後のためにもメモとして記録しておく。

①sqlをエクスポートできない問題

最初にXAMPPのMysqlで作ったデータベースを.sqlファイルとしてエクスポート(書き出し)する作業だが、私の端末だとなぜか「失敗 – ネットワークエラー」になってしまった。

無理やり続行すると「htm」という拡張子でエクスポートされるため、結果的には書き出し失敗になってしまう。

これは「C:\xampp\phpMyAdmin\libraries\classes\Core.php」というファイルに下記を追加すれば解消できる。

if (strpos($mimetype, 'gzip') !== false && $notChromeOrLessThan43) {
            header('Content-Encoding: gzip');
}
header('Content-Transfer-Encoding: binary');
        if ($length <= 0) {
            return;
        }
の間に下記を追加

 if (strpos($mimetype, 'gzip') !== false && $notChromeOrLessThan43) {
            header('Content-Encoding: gzip');
        }
		
		//  エクスポート設定追記 start
		else {
			header_remove('Content-Encoding');
		}
		// エクスポート設定追記 end
		
        header('Content-Transfer-Encoding: binary');
        if ($length <= 0) {
            return;
        }

640行目から始まるif文に対して「エクスポート設定追記 start」の部分を移植してもらえれば.sql拡張子でのエクスポートが可能になる。

2mb以上のデータをインポートできない問題

エクスポートしたデータベースの内容を、今度は新たなデータベースにインポートするのだが、ここでもエラーが発生してしまう。

どうやら2mb以上のデータが入っている場合は、インポート不可能だとデフォルトで設定されているらしい。

これに対する解決方法としては下記の二つが挙げられる。

  • ①データベースのテーブルを一つ一つエクスポートし、アップ
  • ②設定ファイルを修正し、容量を増やす

①の場合は記事が入っているテーブル(wp_posts)は軽く2mbを超えるケースが多いので、②の「C:\xampp\php\php.ini」を修正して容量を増やしてみる。

post_max_size=8M //ここを任意の数字に修正

//以下省略

upload_max_filesize=2M //ここを任意の数字に修正

この二か所の数字を自分のインポートしたいサイズの容量に変更すれば、データベースごと一括アップロードが可能となる。

③移植後に下層ページでinternal errorが出る問題

データベースの環境を整えて、いざローカルのWordPressを本番環境に移すと、データベース接続確立エラーが出てしまう。

これはワードプレスを本番環境のディレクトリに移した際に、mysqlで作ったデータベースと紐づけができていないからだ。

なので、themeよりももっと前のルートとディレクトリーにあるWordPressの「wp-config.php」を修正する必要がある。

define( 'DB_NAME', 'データベースの名前' );

/** Database username */
define( 'DB_USER', 'データベースのユーザーネーム' );

/** Database password */
define( 'DB_PASSWORD', 'データベースのパスワード' );

この部分は23~29行目に書かれており、それぞれデータベースの情報を入れて紐づけを行う必要があるのだ。

ここを入力すればWordPressは先ほど作ったDBに接続するため、移植した記事なども問題なく表示されるはずだ。

④記事ページでinternal errorが出る問題

ここまでくれば無事フロント部分まで表示することができたが、肝心の下層(記事)ページに行くとinternal errorが発生してしまう。

これは恐らくWordPressのURL設定などをhttpではなくhttpsで設定したことなどが原因なのではないかと予測している。

この部分については、先ほどと同じWordPressファイルの入ったルート直下の.htaccessファイルの修正を行えばオッケーだ。

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTPS} !=on [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>

上記はザックリと説明すると「すべてのリクエストをHTTPSにリダイレクトする」といったものだ。

一番上にコピペしてもらえればオッケーで、これによって記事ページも表示されるようになるだろう。

結論・WordPressの移植作業はオススメしない

ここまでの作業を行えば無事サイトにWordPressを移植し、反映も完了するだろう。

私は今回勉強もかねて、あえて自身でデータベースも移植するという面倒な手順を踏んだが、割と面倒だったので個人的にはこのやり方はオススメはしない。

そもそもWordPressには記事等を簡単に移植できるプラグインもあるので、そちらを使う方が効率的だろう。

PIC UP