修改mysql配置中my.conf中max_allowed_packet變量


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

 

 

 

 

 

 

SpringCloudAlibaba實戰教程系列  

Docker(部署常見應用):Docker安裝MySql完整教程、實操 

Docker版:Mysql分庫分表MyCat實戰  

Docker實現Mysql主從復制實戰(一主一從、雙主雙從)  

mysql 5.8以上版本有問題可以參考:

mysql-管理命令【創建用戶、授權、修改密碼、刪除用戶和授權、忘記root密碼】

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM