• ベストアンサー

DUMPした巨大SQLファイルをインポートしても途中まででタイムオーバーになる

phpMyAdminでDUMPしたSQL文ファイルが18MBほどあるのですが、 このファイルを丸ごと別のPCにインポートしようとすると、 タイムオーバーなどで途中までしか受け付けてもらえません。 どこからどこまでがインポートされたかも判別できず、 けっきょくCREATE TABLEなど最初からやり直したりして不便してます。 また、最後まで「完走」するためには、php.iniとかphpMyAdminの configファイルなどで、ファイルサイズやタイムアウトまでの 時間を延ばしたりするのでしょうが、具体的にどこをどのように 書き換えればよいでしょうか。 環境: PHP4.4.4 MySQL 4.0.26 IIS5.1

質問者が選んだベストアンサー

  • ベストアンサー
回答No.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などをした方がよいと思います。

litton101
質問者

お礼

fdsjaklfjasさん、ソースまでご確認いただき恐縮です。 とりあえず、巨大ファイルを小分けにしてインポートしたのですが 見事に文字化けして(EUCをJISで取り込んでいた(T-T)) ご教示のLOAD DATA INFILEというのを調べて 取り組んでみます。 ご教示ありがとうございました。

その他の回答 (3)

  • cooz7654
  • ベストアンサー率77% (7/9)
回答No.3

php.iniでデーフォルトで下記の様になっている箇所を変更して、 タイムアウト時間を延ばすということでいいのかな? default_socket_timeout = 60 (秒単位) ただ、直接サーバに対して権限がおありなのであれば、 直接DBでインポート処理した方がいい気はします。

litton101
質問者

補足

> 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)
回答No.2

そうですか・・・。 そうなるとIISの設定ですね。 恥ずかしながら私はIISは10年近く触ってないのでわかりませんが apacheであればhttpd.confのTimeoutというパラメータが あるようですから、IISにも同等の設定があると思います。 「IIS タイムアウト 設定」あたりで検索するといくつかヒットしますので 参考になるかと。 apacheでそのほかに気にする箇所はpost_max_sizeとupload_max_filesize があります。ようはpostで送れるサイズとファイルで送れるサイズを 指定するのですが、意外にpost値が少なくてファイルサイズ制限に かかって悩む場合があるかもしれません。IISはどうなんでしょね。

litton101
質問者

補足

yamabejpさん、たびたびありがとうございます。 >「IIS タイムアウト 設定」あたりで検索するといくつかヒット するのですが、ピンポイントな設定方法が見当たりません。 HELP等を含め、少し調べてみます。まずは御礼申し上げます。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

(1)SQLを分割しておくるか(2)ファイルでアップして、シェルでmysqlに リダイレクトするのいずれかでいかがでしょう。 タイムアウトを伸ばすのは攻撃に弱くなるのでお勧めできません。

litton101
質問者

補足

yamabejpさん、毎度お世話になります。 ご教示のように、これまではSQLを分割して対応してましたが タイムアウトなどの設定ひとつでラクができるなら そうしたい気分です。 DUMPしたSQLファイルのインポート先は ローカル(XP+IIS)の開発環境ですので、 タイムアウトとかで片付くならできるだけそちらで 済ませたいのですが。。。。。