phpMyAdminで大容量のSQLファイルをインポートする方法
現在稼働しているテスト環境のデータをローカルにある開発環境にコピーしようと思ったら、ファイルサイズが圧縮しても18MByteあってインポートに失敗しました。
php側で制限をかけているため、phpの設定を限界突破させて大容量ファイルをインポートする方法を紹介します。
作業順序
- php.iniの設定変更
- Apacheの再起動
- phpMyAdminのインポート画面の確認
- インポート
この順序で大容量ファイルのインポートを成功させます。
phpの限界突破
phpMyAdminにインポートできるファイル容量はphpMyAdminが決めている訳ではなく、php側の設定に引っ張られます。
phpMyAdminをXAMPPで導入した直後であれば、インポート可能な容量は2048Kbyteです。小規模なインポートであれば十分に事足りますが、既に運用が行われているようなサイトだと不十分であるためインポート出来る容量を増やします。
ただし、単純にインポートの上限値を引き上げただけだと、phpが扱えるメモリ容量を超過してしまって別の問題に発展してしまいます。そうならないために、扱えるメモリの容量の上限値も一緒に引き上げます。
php.iniファイルの修正
php.iniファイルを修正します。
XAMPPであれば、「 XAMPP > php > php.ini 」の順序で見つけれるphp.iniファイルを編集します。
memory_limit=200M post_max_size=180M upload_max_filesize=150M
それぞれのパラメータの役割的に以下の関係になるように数値を設定して下さい。
memory_limit > post_max_size > upload_max_filesize
メモリの上限値 > 最大投稿可能サイズ > 最大アップロード可能サイズ
日本語の通りで例えば最大アップロード可能サイズがメモリの上限値や最大投稿可能サイズを超過してしまっていては、何かおかしいですよね。
上記の様にphp.iniファイルの上限値を設定し、Apacheの再起動を行いphpMyAdminに再接続するとアップロード可能の上限値が引き上げられます。
上記のとおり、ファイルの上限容量が大幅に拡張されていることが分かります。
ちょっと気になったこと
上限値として指定する数値ですが、”200MB”じゃないの?”B”はいらないの?と思われる方もいると思います。私も思いました。調べたのですが“B”は特に不要のようです。php界隈ではそういう決まりなのかな?