MySQL升级后添加JSON列致phpMyAdmin浏览功能崩溃求助
问题原因分析
出现Apache段错误+MySQL连接中断的情况,核心原因大概率是PHP扩展与MySQL/PHPMyAdmin的兼容性问题,具体可能的点:
- PHP版本或mysqli扩展不匹配:phpMyAdmin 4.8.x要求PHP 5.5~7.2版本,且如果你的mysqli扩展是基于旧的
libmysqlclient编译的,它对MySQL 5.7新增的JSON类型处理存在bug,容易触发内存访问错误导致段错误。 - phpMyAdmin缓存或配置冲突:升级phpMyAdmin后,旧的缓存文件(比如表结构缓存)可能残留,或者配置文件里还在用废弃的
mysql扩展而非mysqli,导致处理JSON列时逻辑异常。 - phpMyAdmin 4.8.x的已知bug:部分环境下,4.8.x版本在格式化JSON列数据时存在内存溢出问题,触发Apache子进程崩溃。
分步解决方案
1. 排查PHP环境兼容性
- 检查PHP版本:执行
php -v命令查看版本,确保在5.5.0~7.2.x之间(phpMyAdmin 4.8.x的官方要求),如果版本超出范围,要么升级/降级PHP,要么更换对应版本的phpMyAdmin。 - 确认mysqli扩展类型:创建一个php文件写入
<?php phpinfo(); ?>,访问后查找mysqli模块的Client API library version,优先使用mysqlnd类型;如果是libmysqlclient,建议切换到mysqlnd(大部分Linux发行版可通过安装php-mysqlnd包替换)。
2. 修复phpMyAdmin配置与缓存
- 检查配置文件:打开phpMyAdmin的
config.inc.php,确保存在这行配置:
不要使用已废弃的$cfg['Servers'][$i]['extension'] = 'mysqli';mysql扩展,它完全不支持JSON类型。 - 清除缓存:找到phpMyAdmin安装目录下的
tmp文件夹,删除里面所有文件;或者登录phpMyAdmin后,点击顶部「设置」→「常规」→「清除缓存」。 - 临时关闭JSON格式化:登录phpMyAdmin后点击「设置」→「浏览」,取消勾选「将JSON数据显示为格式化的」选项,保存后再尝试访问「浏览」标签。
3. 调试与替代方案
- 启用PHP错误日志:在
php.ini中设置log_errors = On和error_reporting = E_ALL,触发错误后查看PHP日志,能定位到具体报错的函数或模块。 - 验证MySQL本身:通过MySQL命令行执行
SELECT * FROM 你的表名;,如果能正常读取JSON列数据,说明MySQL无问题,故障完全在PHP/phpMyAdmin侧。 - 更换phpMyAdmin版本:如果上述方法无效,可尝试降级到phpMyAdmin 4.7.x(同样支持JSON列,兼容性更稳定),或升级到4.9.x(需PHP版本支持),新版本可能修复了段错误bug。
内容的提问来源于stack exchange,提问作者marcvander
相关产品推荐
相关产品推荐

