大きめのCSVファイルをアップロードして際のMySQLのエラー【MariaDB,MySQL】

大きなデータを送信した場合に、「クエリーが失敗しました。Got a packet bigger than 'max_allowed_packet’ bytes」

MySQL(MariaDB)で、大きなCSVファイルをアップロードした場合に「クエリーが失敗しました。Got a packet bigger than 'max_allowed_packet’ bytes」と表示され、アップロードできない場合は、「max_allowed_packet」 の値を大きい値に変更します

現在のmax_allowed_packetの設定を確認するには、「show variables like 'max_allowed_packet’;」を入力すると、その値が表示されます。下記の場合は1Mに設定されています

MariaDB [(none)]> show variables like 'max_allowed_packet';
+--------------------+----------+
| Variable_name      | Value    |
+--------------------+----------+
| max_allowed_packet | 1048576  |
+--------------------+----------+
1 row in set (0.008 sec)

MySQLを再起動せずに値を変更するには、「set global max_allowed_packet = 16777216;」とすれば、16Mに設定されます

MariaDB [(none)]> set global max_allowed_packet = 16777216;

設定が変更されているか確認しますが、MySQLの接続を切らないで「show variables like 'max_allowed_packet’;」で確認すると設定前の値となっています。
新しい16Mの設定は、新しい接続から反映するので以前の接続のままだと以前の設定の値となりますので、再接続してから値が変更されているか確認します

MariaDB [(none)]> show variables like 'max_allowed_packet';
+--------------------+----------+
| Variable_name      | Value    |
+--------------------+----------+
| max_allowed_packet | 16777216 |
+--------------------+----------+
1 row in set (0.008 sec)

MySQLで直接、SQL分で変更するとMySQLが再起動されると設定は初期化されますので、再起動しても設定が反映するようには「my.cnf」に「max_allowed_packet=16MB」の設定を追記します

$ sudo vim /etc/my.cnf

[mysqld]
max_allowed_packet=16MB

 

スポンサーリンク