【发布时间】:2016-01-01 05:22:16
【问题描述】:
MySQL throwing Broken Pipe and MySQL Server has gone away 错误。我的数据库表包含我每隔 1 小时定期插入大型 HTML 的文本字段。
我应该考虑设置哪个 MySQL 变量。
这是当前配置:
[mysqld]
datadir=/home/monk/mysql
socket=/home/monk/mysql/mysql.sock
user=mysql
default_time_zone='+06:00'
innodb_buffer_pool_size=35G
innodb_buffer_pool_instances=15
query_cache_type=ON
query_cache_size=64M
join_buffer_size=524288
tmp_table_size=32M
max_heap_table_size=32M
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
max_allowed_packet=1G
# Recommended in standard MySQL setup
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
wait_timeout = 2000
interactive_timeout = 2000
#bind-address=127.0.0.1
##skip-networking~
【问题讨论】:
-
有趣的是,我遇到了类似的问题并将 max_allowed_packet 设置为 64M 来修复它,但您将其设置为 1G!那 HTML 到底有多大?您可以在 mysql 会话中使用
SHOW VARIABLES LIKE 'max_allowed_packet';仔细检查 max_allowed_packet 的值 -
HTML 的大小不超过 25Kb。
-
每次我必须重新启动 MySQL 来解决这个错误,但它会在 2-3 天后再次出现。
-
我会在您的连接会话中验证 max_allowed_packet,并执行
ps aux | grep mysql以验证您正在查看正确的 my.cnf 文件(我相信 mysqld 会检查在--basedir中定义的目录参数)。 -
@Clayton:显示变量返回此输出
1073741824for max_allowed_packet。
标签: mysql database-administration