MySQLインポートデータエラー:Got a packet bigger than'max_allowed_packet' bytes

1900 ワード

MySQLインポートデータエラー:Got a packet bigger than'max_allowed_packet' bytes
理由:
インポートされたデータは、システムの制限された最大パケットサイズより大きい.
挿入されたデータが大きすぎるかもしれませんが、現在作成されているプロジェクトではこのビッグデータが挿入されることは避けられないため、MySQLのデフォルト設定を変更するしかありません.
方法一:グローバル設定の古いバージョン
まずmysqlにログインして現在の値のサイズを表示します
show variables like '%max_allowed_packet%' ;Mysqlにログインして変更できます.
SET GLOBAL max_allowed_packet=150M;
   : 1232
Incorrect argument type to variable 'max_allowed_packet'

Execution Time : 00:00:00:000
Transfer Time  : 00:00:00:000
Total Time     : 00:00:00:000

方式2:新バージョン方式【実はMySQLツールが受け入れるパラメータが違う】
上記の方法で失敗した場合は、次の方法でお願いします.
SET GLOBAL max_allowed_packet=152428800;
バッファを150 Mに設定すると、インポート操作を続行できます.
インポートが終了したら、変更を忘れないでください.デフォルトは比較的小さいです.
SET GLOBAL max_allowed_packet=10M;
方法3:値が設定されているが有効でない場合、究極の解決方法
新しいバージョンのコマンドが実行されても効果はありません.このような操作は、次のようにする必要があります.
[root@localhost ~]# mysql --help | grep my.cnf
                      order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf 

[root@localhost ~]# vi /etc/my.cnf


     :
max_allowed_packet = 100M

     ,        

参照用の完全な構成

[mysqld]

datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

#MySQL 5.7  up           。     only_full_group_by SQL  ,MySQL      
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

max_allowed_packet = 100M
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

拡張読書:only_full_group_by SQLモード
 
Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre
問題の解決については、以下を参照してください.https://www.cnblogs.com/xiangyuqi/p/10627274.html