MySQL
ローカルのMySQLにCSVインポートしようとしたらエラーで落ちてしまった(>_<)
weblanguagestudy.hatenablog.com
で、昨日は対策を行ってファイルサイズを拡張してみた。
そして改めて実行。
そしたらばスクリプトがタイムアウトして途中までしかインポートできないで終わっちゃいました。
タイムアウト時間を延ばそうと思って調べたら、どうもやらない方が良い様子。
(phpMyAdmin)タイムアウト設定の動作と確認 | ええかげんブログ(本店)
phpmyAdmin設定による制限値
phpMyAdminによってエラーが表示されるパターンはそう出逢わないかもしれません。
通常、phpMyAdminをインストールし初期設定のまま利用している場合には、
300秒(5分)でタイムアウトが発生するようになっています。
おそらくはその他の設定が優先され、5分に到達していないのが通常ではないかと思います。
これを拡張するのかと思ったら上記のサイトでは縮小して小さくして、タイムアウトになったら再度続きからインポートするのを勧めていました。
そういうもんなんですね~。
直接インポート
どうもphpMyAdminを使って大きなファイルをインポートするのがよくない様子。
なのでコマンドラインから直接インポートしてみました。
でも下記のエラー。
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
これでどうかな?