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

推荐订阅源

WordPress大学
WordPress大学
V
Visual Studio Blog
P
Privacy International News Feed
月光博客
月光博客
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
L
Lohrmann on Cybersecurity
N
News and Events Feed by Topic
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Apple Machine Learning Research
Apple Machine Learning Research
阮一峰的网络日志
阮一峰的网络日志
Webroot Blog
Webroot Blog
T
Threatpost
宝玉的分享
宝玉的分享
The Last Watchdog
The Last Watchdog
小众软件
小众软件
L
LINUX DO - 最新话题
C
Cisco Blogs
T
Troy Hunt's Blog
Schneier on Security
Schneier on Security
酷 壳 – CoolShell
酷 壳 – CoolShell
www.infosecurity-magazine.com
www.infosecurity-magazine.com
雷峰网
雷峰网
G
GRAHAM CLULEY
有赞技术团队
有赞技术团队
Know Your Adversary
Know Your Adversary
博客园 - 叶小钗
罗磊的独立博客
V
V2EX
博客园 - Franky
P
Proofpoint News Feed
SecWiki News
SecWiki News
腾讯CDC
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Jina AI
Jina AI
博客园 - 三生石上(FineUI控件)
S
Secure Thoughts
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Google DeepMind News
Google DeepMind News
Attack and Defense Labs
Attack and Defense Labs
人人都是产品经理
人人都是产品经理
The Cloudflare Blog
PCI Perspectives
PCI Perspectives
V2EX - 技术
V2EX - 技术
Google DeepMind News
Google DeepMind News
Last Week in AI
Last Week in AI
aimingoo的专栏
aimingoo的专栏
Cisco Talos Blog
Cisco Talos Blog
N
News and Events Feed by Topic
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
S
SegmentFault 最新的问题

博客园 - bwteacher

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 或检查程序的连接池配置。 如果还有具体的操作细节,可以告诉我,我再帮你进一步分析。