phpmyadmin主动截断结果是保护机制而非bug:必须在config.inc.php中$cfg=[]块末尾设置$cfg['maxrows']=2000和$cfg['limitchars']=500,禁用$cfg['showall']=false,并调高php memory_limit≥512m、max_execution_time≥300,否则仍会卡死或502。

不是数据丢了,是 phpMyAdmin 主动截断了——它默认只显示前几百行、每个字段最多 50 个字符,这是硬编码的保护机制,不是 bug。
为什么 $cfg['MaxRows'] 和 $cfg['LimitChars'] 必须改 config.inc.php
这两个参数控制实际渲染行为,但它们只在 config.inc.php 中生效,且必须写在 $cfg = [] 赋值块末尾。宝塔、AMH 等面板常通过 include 动态覆盖配置,如果你把修改写在前面,会被后面加载的文件冲掉。
-
$cfg['MaxRows'] = 2000:设为0表示不限制,但极易触发 PHP 内存耗尽或浏览器卡死,不建议 -
$cfg['LimitChars'] = 500:长文本、JSON、HTML 字段常被截成“...”,调高才能看清内容 - 改完必须重启 Web 服务(
nginx或apache2)和 PHP-FPM,否则不生效
点了“显示全部”还是只看到几百行
因为 $cfg['ShowAll'] = true 会绕过 MaxRows 限制,但 phpMyAdmin 仍会在后端强制加 LIMIT(如 LIMIT 0, 5000),且对结果逐行做 HTML 转义、邮箱自动链接、类型推断——万行以上 CPU 占用直接拉满。
- 禁用它:
$cfg['ShowAll'] = false(注意不是false小写) - 勾选 SQL 界面右上角「显示无格式」,对应
$cfg['SQLQuery']['Edit'] = false,跳过字段解析 - 加
$cfg['SQLQuery']['AsIs'] = true,防止 phpMyAdmin 自动套一层SELECT * FROM (…)导致索引失效 - 这两项若不生效,检查是否被
if (PMA_IS_LOCALHOST)包裹——线上环境根本不会执行这个分支
改了配置还是卡死或 502
这不是前端问题,而是 PHP 进程被系统杀掉或超时中断。phpMyAdmin 把整张表读进内存再处理,百万行 + TEXT 字段会瞬间吃光 memory_limit,触发 OOM Killer 或 FastCGI timeout。
- 立刻检查
phpinfo()页面确认memory_limit是否 ≥ 512M - 同步调大
max_execution_time(至少 300)和output_buffering(设为Off或 8M) - Nginx 用户必须同步检查
client_max_body_size,否则请求根本到不了 PHP 层 - 导出百万行别点“导出”按钮:用命令行
mysqldump或 SQL 中SELECT ... INTO OUTFILE
真正容易被忽略的是:即使所有配置都调高了,phpMyAdmin 对 JSON 字段、utf8mb4_0900 排序规则等 MySQL 8.0+ 特性支持极差,旧版本(如 4.4)会直接 fallback 成 TEXT 渲染,甚至点击字段就 500 报错——这时不是配置问题,是架构不兼容,该换工具了。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











