エックスサーバーをメインで使っているのですが、MySQLのDBをエックスサーバーに標準で付いているphpMyAdminでインポートしようとしたところ、500 Internal Server Error が発生してインポート出来ませんでした。

 

エックスサーバーの場合、「最長: 205 kKiB」までのMySQLがインポート出来ると書いていますが、大きすぎるとエラーが生じるようです。因みに

1kib = 0.001024 メガバイト

205kKiB = 205 × 1024 × 0.001024 = 約215MB

です。

 

zipに圧縮すると、100MB以上あるDBも10分の1の大きさまで小さくなる場合がありますが、それでもインポート出来ません。

では、どうするかといえば、BigDump を使います。

BigDumpでのインポート

まず、BigDumpというPHPプログラムをダウンロードして下さい。トップページの右側からダウンロード出来ます。

zipファイルを解凍すると、bigdump.php というファイルが出てきます。そのファイルを、秀丸などのテキストエディタで開いて下さい。45行位に、

$db_server = '';
$db_name = '';
$db_username = '';
$db_password = '';

という記述があるので、

$db_server ・・・ ホスト名
$db_name ・・・データベース名
$db_username ・・・ アクセス権を持ったユーザー名
$db_password ・・・ ユーザーのパスワード

を入力して、保存して下さい。

他は変更する必要はありません。

このファイルを、bdなどのフォルダを作成してサーバーへアップして下さい。

同じフォルダー内へ、インポートしたいMySQLファイルをアップして下さい。因みに、zipに圧縮したファイルではダメです。圧縮していないMySQLファイルをアップして下さい。この例ですと、173MBもの容量があるファイルです。

サーバーにアップした bigdump.php にアクセスすると以下のような画面が出現します。

インポートしたいファイルは xxx.sql なので、右にある Start Import をクリックして下さい。大きいファイルの場合、クリック後、以下のような画面に変わります。(数分間は無反応状態になる場合もあります)

そして、インポートが完了すると、以下のような画面に変わります。

これでインポートは成功です。

正常にインポート出来ない場合

インポート中に以下のような画面が出て正常にインポート出来ない場合があります。

 

Stopped at the line 616249.
At this place the current query includes more than 300 dump lines. That can happen if your dump file was created by some tool which doesn't place a semicolon followed by a linebreak at the end of each query, or if your dump contains extended inserts or very long procedure definitions. Please read the BigDump usage notes for more infos. Ask for our support services in order to handle dump files containing extended inserts.

このような場合は、MySQLをエクスポートする時に「作成するクエリの最大長」という項目があるので、それを1000など小さい数字にしてエクスポートすると、問題なくインポートすることが出来ます。

 

 

参考
http://yokotakenji.me/log/server/4546/