mysql根據配置文件會限制server接受的數據包大小。
有時候大的插入和更新會受max_allowed_packet 參數限制,導致寫入或者更新失敗。
查看目前配置
show VARIABLES like '%max_allowed_packet%';
顯示的結果為:
+--------------------+---------+
| Variable_name | Value |
+--------------------+---------+
| max_allowed_packet | 1048576 |
+--------------------+---------+
以上說明目前的配置是:1M
修改方法
1、修改配置文件 (詳情見下文配置步驟)
可以編輯my.cnf來修改(windows下my.ini),在[mysqld]段或者mysql的server配置段進行修改。
max_allowed_packet = 20M
如果找不到my.cnf可以通過
mysql --help | grep my.cnf
去尋找my.cnf文件。
linux下該文件在/etc/下。
2、在mysql命令行中修改
在mysql 命令行中運行
set global max_allowed_packet = 2*1024*1024*10
然后退出命令行,重啟mysql服務,再進入。
show VARIABLES like '%max_allowed_packet%';
查看下max_allowed_packet是否編輯成功
配置步驟
1、首先查看mysql安裝目錄下support-files文件夾下是否有my-default.cnf這個文件
localhost:etc qingclass$ pwd /usr/local/mysql/support-files sun:support-files sun$ ll total 48 -rw-r--r-- 1 root wheel 773 3 4 21:40 magic -rwxr-xr-x 1 root wheel 894 3 4 22:27 mysql-log-rotate* -rwxr-xr-x 1 root wheel 10585 3 4 22:27 mysql.server* -rwxr-xr-x 1 root wheel 1061 3 4 22:27 mysqld_multi.server*
如果有,就好辦了,直接轉移到/etc下,並且修改名字為my.cnf
2、如果沒有則需要自己創建一個文件。
localhost:etc qingclass$ sudo vim my.cnf #會打開創建一個新的文件,將下邊的內容復制進去
# Example MySQL config file for small systems. # # This is for a system with little memory (<= 64M) where MySQL is only used # from time to time and it's important that the mysqld daemon # doesn't use much resources. # # MySQL programs look for option files in a set of # locations which depend on the deployment platform. # You can copy this option file to one of those # locations. For information about these locations, see: # http://dev.mysql.com/doc/mysql/en/option-files.html # # In this file, you can use all long options that a program supports. # If you want to know which options a program supports, run the program # with the "--help" option. # The following options will be passed to all MySQL clients [client] default-character-set=utf8 #password = your_password port = 3306 socket = /tmp/mysql.sock # Here follows entries for some specific programs # The MySQL server [mysqld] #解決only_full_group_by的問題 #sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION default-storage-engine=INNODB character-set-server=utf8 collation-server=utf8_general_ci port = 3306 socket = /tmp/mysql.sock skip-external-locking key_buffer_size = 16K max_allowed_packet = 1M table_open_cache = 4 sort_buffer_size = 64K read_buffer_size = 256K read_rnd_buffer_size = 256K net_buffer_length = 2K thread_stack = 128K # Don't listen on a TCP/IP port at all. This can be a security enhancement, # if all processes that need to connect to mysqld run on the same host. # All interaction with mysqld must be made via Unix sockets or named pipes. # Note that using this option without enabling named pipes on Windows # (using the "enable-named-pipe" option) will render mysqld useless! # #skip-networking server-id = 1 # Uncomment the following if you want to log updates #log-bin=mysql-bin # binary logging format - mixed recommended #binlog_format=mixed # Causes updates to non-transactional engines using statement format to be # written directly to binary log. Before using this option make sure that # there are no dependencies between transactional and non-transactional # tables such as in the statement INSERT INTO t_myisam SELECT * FROM # t_innodb; otherwise, slaves may diverge from the master. #binlog_direct_non_transactional_updates=TRUE # Uncomment the following if you are using InnoDB tables #innodb_data_home_dir = /usr/local/mysql/data #innodb_data_file_path = ibdata1:10M:autoextend #innodb_log_group_home_dir = /usr/local/mysql/data # You can set .._buffer_pool_size up to 50 - 80 % # of RAM but beware of setting memory usage too high #innodb_buffer_pool_size = 16M #innodb_additional_mem_pool_size = 2M # Set .._log_file_size to 25 % of buffer pool size #innodb_log_file_size = 5M #innodb_log_buffer_size = 8M #innodb_flush_log_at_trx_commit = 1 #innodb_lock_wait_timeout = 50 [mysqldump] quick max_allowed_packet = 16M [mysql] no-auto-rehash # Remove the next comment character if you are not familiar with SQL #safe-updates [myisamchk] key_buffer_size = 8M sort_buffer_size = 8M [mysqlhotcopy] interactive-timeout
修改 mysqldump 和 mysqld 中修改max_allowed_packet變量退出保存
3、修改配置文件權限
chmod 664 /etc/my.cnf
4、重啟mysql
5、登錄mysql服務器 選擇庫,執行導入source /Users/qingclass/Downloads/sale_shared_revenue.sql
Docker(部署常見應用):Docker安裝MySql完整教程、實操
Docker實現Mysql主從復制實戰(一主一從、雙主雙從)
mysql 5.8以上版本有問題可以參考:
mysql-管理命令【創建用戶、授權、修改密碼、刪除用戶和授權、忘記root密碼】