phpmyadmin执行sql卡在“loading…”大概率是后端阻塞或超时:select可能被max_execution_time(错误码1969)静默终止;大sql导入常因max_allowed_packet不足(默认4m)导致静默丢弃;update/delete卡住多因锁等待或事务未提交;php层memory_limit、max_execution_time及nginx client_max_body_size配置不当也会伪装成加载中。
phpmyadmin 执行 sql 语句卡在“loading…”状态,大概率不是网络或前端问题,而是后端查询被阻塞或超时中断——常见于 select 类长耗时查询被 max_execution_time 主动终止,或 mysql 连接因资源不足提前断开。
执行 SELECT 卡住却无报错?先查是不是被 max_execution_time 杀了
MySQL 5.7+ 的 max_execution_time 是会话级强制中断机制,超时后不抛异常、不提示,只让客户端一直转圈。错误码是 1969(Query execution was interrupted),和网络断开的 2013 完全不同。
- 进 phpMyAdmin 的 SQL 标签页,执行
SELECT @@session.max_execution_time;看当前值;默认常为0(禁用)或30000(30 秒) - 执行长查询前手动加一句:
SET SESSION max_execution_time = 120000;(2 分钟),再跑你的 SQL - 如果要用全局设置,必须有
SUPER权限,且需SET GLOBAL max_execution_time = 120000;,但已存在的连接不会自动更新 - 查是否真被杀:执行
SHOW PROCESSLIST;,看对应线程的State是否为Killed
导入或执行大 SQL 文件时白屏/卡死?重点盯 max_allowed_packet
WordPress 或导出的大 SQL 常含单条超长 INSERT,长度轻松破 10MB。MySQL 默认 max_allowed_packet = 4M,超过就静默丢弃请求体——页面不报错,只停在 loading 状态。
- 确认当前值:
SHOW VARIABLES LIKE 'max_allowed_packet'; - 临时生效(本次会话):
SET GLOBAL max_allowed_packet = 268435456;(256MB) - 永久生效:编辑 MySQL 配置文件(
my.cnf或my.ini),在[mysqld]下加一行:max_allowed_packet = 256M,然后重启 MySQL - 注意:PHP 层面的
upload_max_filesize和post_max_size也要同步调高,否则文件根本传不到 phpMyAdmin
执行 UPDATE/DELETE 卡住不动?可能是锁等待或事务未提交
max_execution_time 对写操作无效,这类卡顿往往源于行锁、表锁或未显式 COMMIT 导致的事务挂起。
- 检查是否有其他长事务占着资源:
SELECT * FROM information_schema.INNODB_TRX\G - 看锁等待:
SELECT * FROM information_schema.INNODB_LOCK_WAITS; - 在 phpMyAdmin 中执行写操作前,建议先手动
START TRANSACTION;,执行完明确COMMIT;或ROLLBACK; - 避免在 phpMyAdmin UI 里点“执行”后直接切走——它默认不自动提交,后台连接可能被超时回收,导致锁残留
PHP 层面的 memory_limit 或 timeout 也会伪装成“加载中”
phpMyAdmin 把整个 SQL 内容读进 PHP 内存再解析执行,memory_limit 不够会静默失败;而 max_execution_time(PHP 级)设太低,则在 MySQL 返回前就被 PHP 自己 kill 掉。
- 确认你改的是 Web SAPI(如 PHP-FPM)的
php.ini,不是 CLI 版本;宝塔用户务必在「软件商店 → PHP 设置 → 配置修改」里改 - 至少设:
memory_limit = 512M、max_execution_time = 600、post_max_size = 512M(≥upload_max_filesize) - 宝塔还额外要改 Nginx 配置:在站点配置的
server块里加client_max_body_size 512M;,否则请求在进 PHP 前就被拦截 - 改完必须重启 PHP-FPM 和 Web 服务(Nginx/Apache),且浏览器要硬刷新(Ctrl+F5)
真正难排查的,是那些“看起来没报错、但就是不动”的情况——它可能同时涉及 MySQL 的 max_execution_time、max_allowed_packet、PHP 的内存与超时、Nginx 的 body 大小限制四层关卡。少调一个,就卡在那一层,且几乎不给明确提示。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











