ローカルで開発するのに運営しているWordPressのサイト(リモート)からデータベースファイルをインポートしようとしていました。で、ご存じのとおり、phpmyadminを使用するとリモートからエキスポートした巨大なsqlファイルはインポートできません。
Google先生にきいてみると、先人達の知恵を教えてくださり、下記のbigdumpというphpプログラムを使ってローカルのMySQLにアップロードを試みました。
目次
bigdumpをダウンロード
BigDump: Staggered MySQL Dump Importer
途中、こんなメッセージがでたものの
Note: The current mySQL connection charset is latin1. Your dump file must be encoded in latin1 in order to avoid problems with non-latin characters. You can change the connection charset using the $db_connection_charset variable in bigdump.php
無事にインストールができたのでほっとしたのもつかの間、データベースを確認するとしっかりと文字化けしておりました。原因は上記親切なメッセージのとおり、ローカルのMySQLの文字コードとリモートからエキスポートしたデータベースの文字コードの違いです。
この件についてもGoogle先生にきいてみると、対応方法を見つけることができました。
MySQLのcharsetをutf8に変更する
が、なぜかうまくいかない。my.cnfを設定して、/MAMP/db/mysql/ においたり、/MAMP/db/mysql/mysql/ においたりしても、なぜだかcharacter_set_databaseと character_set_serverはあいかわらずlatin1のまま。
この解決方法を見つけるべくさまよっていたのですが、なぜだかターミナルからMySQLにsqlをあげるsouceというコマンドを試してみました。最初に試したbigdumpと同じはずなので、どうせこちらでも文字化けしているのだろうとphpmyadminからデータベースを確認したところ、なんとこちらは文字化けなし。
なにがどうなんだかわからないけど、とりあえずダウンロードした巨大エキスポートファイルをローカルにインポートするという目的は達成できたので、手順を記録しておきます。
ターミナルでの操作
cd /Applications/MAMP/Library/bin
./mysql -u root -p
↑ これでMySQLを起動
mysql> CREATE DATABASE check_01;
データベースをつくって
mysql> show variables like “char%”;
文字コードを確認。当然、ここでもlatin1は表示されます。
mysql> use check_01;
データベースを選んで
mysql> source /Users/ユーザー名/Downloads/database001.sql;
エキスポートしたsqlファイルを選択。このとき、ファインダーからドラッグ&ドロップすると便利です。
しばらくまてば、データがインポートされます。
いずれにせよ、MAMPでのMySQLの文字コード問題は解決していないんだけど、とりあえず開発に戻ります。