惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
Blog — PlanetScale
Blog — PlanetScale
S
Security @ Cisco Blogs
G
GRAHAM CLULEY
L
LINUX DO - 热门话题
AWS News Blog
AWS News Blog
P
Privacy International News Feed
Cyberwarzone
Cyberwarzone
P
Proofpoint News Feed
腾讯CDC
美团技术团队
宝玉的分享
宝玉的分享
博客园 - 聂微东
小众软件
小众软件
T
Threat Research - Cisco Blogs
L
Lohrmann on Cybersecurity
雷峰网
雷峰网
T
Threatpost
The Hacker News
The Hacker News
P
Palo Alto Networks Blog
L
LangChain Blog
Cisco Talos Blog
Cisco Talos Blog
G
Google Developers Blog
V
Vulnerabilities – Threatpost
NISL@THU
NISL@THU
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Engineering at Meta
Engineering at Meta
T
Troy Hunt's Blog
F
Full Disclosure
博客园_首页
The Last Watchdog
The Last Watchdog
S
Secure Thoughts
H
Heimdal Security Blog
Hacker News: Ask HN
Hacker News: Ask HN
C
Check Point Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
PCI Perspectives
PCI Perspectives
Microsoft Security Blog
Microsoft Security Blog
S
Security Affairs
量子位
Cloudbric
Cloudbric
H
Hacker News: Front Page
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
L
LINUX DO - 最新话题
IT之家
IT之家
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Spread Privacy
Spread Privacy
Forbes - Security
Forbes - Security
Security Archives - TechRepublic
Security Archives - TechRepublic

博客园 - bwteacher

fastadmin中前端表格中字段状态动态加载问题 mysql实用 fastadmin操作 fastadmin下的多级联动 CentOS7安装Python3.10环境 表单提交fastadmin form jdk-24及tomcat-11.0.9(解压版)安装配置 mermaid基于 JavaScript 的图表绘制工具 HbuilderX 小随笔 v-bind和v-model的区别 v-if和v-show的区别 uniapp中@tap与@click点击事件的差异 PHP常用数学函数 距离-有这么多类 bootstrap.table汇总 selectpage汇总 jQuery没有匹配到任何内容,返回什么? js数组常用方法 thinkphp控制器名称命名相关 php常见错误码 ThinkPHP的join关联查询不使用默认的表前缀 阿里云虚拟主机创建https
mysql操作错误
bwteacher · 2026-04-27 · via 博客园 - bwteacher

一、2006 - MySQL server has gone away
  这个报错(错误码 2006)非常经典,它的意思是客户端与 MySQL 服务器之间的连接意外断开了。这通常不是数据库崩溃,而是由于某些配置限制导致服务器主动“踢掉”了客户端。
导致这个问题的核心原因通常有两个:数据包过大 或 连接超时。你可以对照以下场景进行排查和解决:
1. 数据包过大(最常见于导入数据或插入大字段)
如果你是在导入大型 SQL 文件、批量插入大量数据,或者插入包含图片、长文本(BLOB/LongBlob)的数据时遇到这个报错,大概率是因为数据包超过了 MySQL 的限制。
    原因:MySQL 的 max_allowed_packet 参数默认通常只有 4MB 或 16MB。如果单条 SQL 语句或数据包超过这个大小,服务器会直接断开连接。
    解决方法:
        临时修改(推荐先试这个):在 MySQL 命令行中执行 SET GLOBAL max_allowed_packet = 64*1024*1024;(设置为 64MB,可根据实际需求调整)。
        导入文件时指定:如果你是在用命令行导入 SQL 文件,可以在命令中显式指定大小,例如:mysql --max_allowed_packet=64M -u root -p 数据库名 < 你的文件.sql。
        永久修改:在 MySQL 的配置文件(Linux 下是 my.cnf,Windows 下是 my.ini)的 [mysqld] 部分添加 max_allowed_packet = 64M,然后重启 MySQL 服务。
2. 连接超时(最常见于程序长时间空闲后操作)
如果你是在程序运行过程中(比如爬虫、定时任务、后台服务),或者长时间没有操作数据库后突然执行查询时报错,通常是因为连接超时。
    原因:MySQL 有两个超时参数 wait_timeout 和 interactive_timeout(默认通常是 8 小时)。如果一个数据库连接在设定的时间内没有任何活动,服务器就会自动关闭它。当你的程序拿着这个已经失效的连接去请求数据时,就会报 2006 错误。
    解决方法:
        程序端(最佳实践):如果你使用了数据库连接池(如 Java 的 HikariCP、Python 的 SQLAlchemy 等),建议开启连接有效性检测。例如在 SQLAlchemy 中配置 pool_pre_ping=True,这样每次从连接池取出连接时,会先验证连接是否存活,如果失效会自动重连。
        手动重连:在代码逻辑中捕获这个 2006 异常,一旦发生就重新建立数据库连接并重试。
        调整服务器参数:可以通过 SET GLOBAL wait_timeout = 28800; 适当调大超时时间,或者在配置文件中永久修改。
3. 其他可能原因
    MySQL 服务崩溃或重启:检查 MySQL 的错误日志(如 /var/log/mysql/error.log),看看服务器是否因为内存溢出(OOM)或其他原因发生了崩溃或重启。
    网络不稳定:如果数据库在远程服务器(如云服务器),中间的网络防火墙、负载均衡器可能会清理长时间空闲的 TCP 连接。
建议你先确认一下报错发生的具体场景(是在导入数据,还是在程序运行中),然后针对性地调整 max_allowed_packet 或检查程序的连接池配置。 如果还有具体的操作细节,可以告诉我,我再帮你进一步分析。