この技術ブログ作った際に、あらかじめ作っていたローカルのデータベースをXAMPPのphpMyAdminにエクスポート・インポートしようとしたが、それぞれにエラーが発生した。
自身でDB設定を行う場合は、どうやら設定ファイルを少しいじらなければならない様で、意外と工数がかかった。
その修正内容を今後のためにもメモとして記録しておく。
Table of Contents
①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には記事等を簡単に移植できるプラグインもあるので、そちらを使う方が効率的だろう。