読者です 読者をやめる 読者になる 読者になる

Web言語のお勉強~ど素人が往く~

かつてVB6を1年くらい触った事があるだけのど素人がWeb言語に挑戦します。勉強結果を随時発表します。

ローカルMySQLに大きなファイルサイズのCSVファイルをインポートできない(;_;)


MySQL

ローカルのMySQLにCSVインポートしようとしたらエラーで落ちてしまった(>_<)

weblanguagestudy.hatenablog.com

で、昨日は対策を行ってファイルサイズを拡張してみた。
そして改めて実行。

f:id:MoneyReport:20150413185643p:plain

そしたらばスクリプトがタイムアウトして途中までしかインポートできないで終わっちゃいました。
タイムアウト時間を延ばそうと思って調べたら、どうもやらない方が良い様子。

(phpMyAdmin)タイムアウト設定の動作と確認 | ええかげんブログ(本店)


phpmyAdmin設定による制限値

phpMyAdminによってエラーが表示されるパターンはそう出逢わないかもしれません。
通常、phpMyAdminをインストールし初期設定のまま利用している場合には、
300秒(5分)でタイムアウトが発生するようになっています。
おそらくはその他の設定が優先され、5分に到達していないのが通常ではないかと思います。

これを拡張するのかと思ったら上記のサイトでは縮小して小さくして、タイムアウトになったら再度続きからインポートするのを勧めていました。

そういうもんなんですね~。

直接インポート

どうもphpMyAdminを使って大きなファイルをインポートするのがよくない様子。
なのでコマンドラインから直接インポートしてみました。

でも下記のエラー。

f:id:MoneyReport:20150414130121p:plain

ERROR 2006 (HY000) at line **: MySQL server has gone away

と出ています。
調べます。

インポート時に「MySQL server has gone away」が発生したときの対処 | 南紀熊野ウェブサービス(大阪、新宮市)


次のようなコマンドで、mysqldumpでダンプされたデータをインポートしたとします。


mysql --default-character-set=utf8 -u root -p dbname < alldata.sql
ただ、サイズの大きいデータベースのダンプデータをインポートすると、次のようなエラーが発生する場合があります。


ERROR 2006 (HY000) at line **: MySQL server has gone away
おそらく、ダンプしたサーバよりコミュニケーションバッファの最大サイズが少ないために発生していると思われますので、このようなときはmy.cnfの max_allowed_packet のサイズを


max_allowed_packet = 32M
というように大きくし、MySQLを再起動すると解決します。

ふむふむ。

修正対応

【修正前】

max_allowed_packet = 1M


【修正後】

max_allowed_packet = 32M

これでどうかな?