- ベストアンサー
DUMPした巨大SQLファイルをインポートしても途中まででタイムオーバーになる
phpMyAdminでDUMPしたSQL文ファイルが18MBほどあるのですが、 このファイルを丸ごと別のPCにインポートしようとすると、 タイムオーバーなどで途中までしか受け付けてもらえません。 どこからどこまでがインポートされたかも判別できず、 けっきょくCREATE TABLEなど最初からやり直したりして不便してます。 また、最後まで「完走」するためには、php.iniとかphpMyAdminの configファイルなどで、ファイルサイズやタイムアウトまでの 時間を延ばしたりするのでしょうが、具体的にどこをどのように 書き換えればよいでしょうか。 環境: PHP4.4.4 MySQL 4.0.26 IIS5.1
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
phpMyAdminのソースをちょっと見ました。 「スクリプトがタイムアウトを過ぎました。・・・」 というメッセージが出る条件は、 ・allow_interruptがtrue (AND) ・アップロードに掛かる時間が、php.iniのmax_execution_time設定よりも大きい 場合のようです。この辺の設定をいじれば、何とかなりそうです。allow_interruptは、phpMyAdminの画面(インポートへの割り込み云々のチェックボックス)で設定できるようです。 (すみませんが、確認はしていません)。 あと、php.iniの以下の設定も要注意です。 upload_max_filesize、memory_limit、post_max_size cooz7654さんご指摘のように、可能であれば、DOS窓でmysqlクライアントを起動して、そこからLOAD DATA INFILEなどをした方がよいと思います。
その他の回答 (3)
- cooz7654
- ベストアンサー率77% (7/9)
php.iniでデーフォルトで下記の様になっている箇所を変更して、 タイムアウト時間を延ばすということでいいのかな? default_socket_timeout = 60 (秒単位) ただ、直接サーバに対して権限がおありなのであれば、 直接DBでインポート処理した方がいい気はします。
補足
> php.iniでデーフォルトで下記の様になっている箇所を変更して、 > タイムアウト時間を延ばすということでいいのかな? cooz7654さん、アドバイスありがとうございます。ご教示どおり default_socket_timeout = 1200 ←(20分) としてIISを再起動してみましたが(20分たたなくても) 10分くらいで 「スクリプトがタイムアウトを過ぎました。 インポートを終わらせたい場合、同じファイルを再送信し、 インポートを再開させてください」 といわれますね(phpMyAdmin - 2.8.2.4に) > ただ、直接サーバに対して権限がおありなのであれば、 > 直接DBでインポート処理した方がいい気はします。 これはどういうことでしょうか。 phpMyAdmin - 2.8.2.4で操作するのは 「直接DBでインポート処理」していることにはなりませんか? ローカルで、DOS窓にDUMP(エクスポート)されたSQL文を 流したほうがよいでしょうか?
- yambejp
- ベストアンサー率51% (3827/7415)
そうですか・・・。 そうなるとIISの設定ですね。 恥ずかしながら私はIISは10年近く触ってないのでわかりませんが apacheであればhttpd.confのTimeoutというパラメータが あるようですから、IISにも同等の設定があると思います。 「IIS タイムアウト 設定」あたりで検索するといくつかヒットしますので 参考になるかと。 apacheでそのほかに気にする箇所はpost_max_sizeとupload_max_filesize があります。ようはpostで送れるサイズとファイルで送れるサイズを 指定するのですが、意外にpost値が少なくてファイルサイズ制限に かかって悩む場合があるかもしれません。IISはどうなんでしょね。
補足
yamabejpさん、たびたびありがとうございます。 >「IIS タイムアウト 設定」あたりで検索するといくつかヒット するのですが、ピンポイントな設定方法が見当たりません。 HELP等を含め、少し調べてみます。まずは御礼申し上げます。
- yambejp
- ベストアンサー率51% (3827/7415)
(1)SQLを分割しておくるか(2)ファイルでアップして、シェルでmysqlに リダイレクトするのいずれかでいかがでしょう。 タイムアウトを伸ばすのは攻撃に弱くなるのでお勧めできません。
補足
yamabejpさん、毎度お世話になります。 ご教示のように、これまではSQLを分割して対応してましたが タイムアウトなどの設定ひとつでラクができるなら そうしたい気分です。 DUMPしたSQLファイルのインポート先は ローカル(XP+IIS)の開発環境ですので、 タイムアウトとかで片付くならできるだけそちらで 済ませたいのですが。。。。。
お礼
fdsjaklfjasさん、ソースまでご確認いただき恐縮です。 とりあえず、巨大ファイルを小分けにしてインポートしたのですが 見事に文字化けして(EUCをJISで取り込んでいた(T-T)) ご教示のLOAD DATA INFILEというのを調べて 取り組んでみます。 ご教示ありがとうございました。