根本原因是phpmyadmin所需元数据表缺失,应删除phpmyadmin数据库后执行xampp\phpmyadmin\sql\create_tables.sql重建;同时需检查config.inc.php中controluser配置是否匹配mysql实际账号,必要时修复innodb底层文件。

phpMyAdmin 报错 “Table 'phpmyadmin.pma_xxx' doesn't exist in engine”
这是 phpMyAdmin 启动时尝试访问其内部管理表(如 pma_bookmark、pma_recent)失败的典型表现,根本原因不是权限或密码问题,而是 MySQL 中缺少 phpMyAdmin 所需的元数据表结构。
常见错误现象包括:登录后弹出红色警告、部分功能灰显(如“导入”“用户”页签打不开)、日志里反复出现类似 Table 'phpmyadmin.pma_recent' doesn't exist in engine 的报错。
- 不要手动创建空数据库
phpmyadmin—— 它必须由官方建表脚本初始化 - 先确认
\xampp\mysql\data\phpmyadmin\目录是否存在且非空;如果整个文件夹缺失或为空,说明建表根本没执行过 - 建表脚本路径固定为:
\xampp\phpMyAdmin\sql\create_tables.sql,不是config.sample.inc.php或其他位置 - 执行前务必停止 MySQL 服务(通过 XAMPP 控制面板),否则可能因表锁导致导入失败
用 mysql 命令行重装 phpMyAdmin 系统表
图形界面操作容易漏步骤,命令行方式最可控。关键在于连接时用 root 账号、不带密码(XAMPP 默认初始状态),并指定 phpmyadmin 数据库上下文。
打开 CMD,进入 \xampp\mysql\bin\ 目录,依次运行:
mysql -u root -p # 直接回车(不输入任何字符),进入 mysql 提示符 mysql> DROP DATABASE IF EXISTS phpmyadmin; mysql> CREATE DATABASE phpmyadmin DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin; mysql> USE phpmyadmin; mysql> SOURCE D:/xampp/phpMyAdmin/sql/create_tables.sql;
注意路径中的斜杠方向(Windows 下用正斜杠或双反斜杠均可),SOURCE 命令不支持中文路径或空格,建议把 XAMPP 安装在纯英文路径下(如 D:/xampp)。
如果提示 ERROR 1046 (3D000): No database selected,说明漏了 USE phpmyadmin; 这步;如果提示 Access denied,检查是否误输密码或 root 密码已被改过 —— 此时应先用 mysqld --skip-grant-tables 重置密码。
config.inc.php 中 controluser 配置必须匹配实际账号
即使表建好了,phpMyAdmin 仍可能报错,因为它的高级功能(如“用户账户”页签、实时监视)依赖一个专用控制用户(controluser),这个账号需要有特定权限,且用户名/密码必须和 config.inc.php 中配置完全一致。
打开 \xampp\phpMyAdmin\config.inc.php,找到类似这样的段落:
$cfg['Servers'][$i]['controluser'] = 'pma'; $cfg['Servers'][$i]['controlpass'] = 'pmapass';
你需要确保:
- MySQL 中存在名为
pma的用户(不是root),且密码是pmapass - 该用户对
phpmyadmin数据库有全部权限:GRANT ALL PRIVILEGES ON `phpmyadmin`.* TO 'pma'@'localhost'; - 如果不想折腾 controluser,可直接注释掉这两行 —— phpMyAdmin 会退化为基本模式,但核心功能(查表、导出、SQL 执行)不受影响
修复后仍提示 #1932 错误?检查 InnoDB 文件完整性
如果做完上述步骤,重启 MySQL 后还是报 #1932 - Table 'xxx' doesn't exist in engine,大概率是 InnoDB 引擎底层文件损坏或丢失,尤其是 ibdata1 文件异常。
定位到 \xampp\mysql\data\ 目录,检查是否存在 ibdata1 文件。若缺失或大小异常(比如只有几 KB),从备份目录恢复:
- 去
\xampp\mysql\backup\找同名文件ibdata1 - 停止 MySQL,复制该文件到
\xampp\mysql\data\覆盖(不要删除原目录下其他 .ibd 文件) - 启动 MySQL,观察错误日志中是否还有
InnoDB: Error: log file ./ib_logfile0 is of different size类提示 —— 若有,还需同步清理ib_logfile0和ib_logfile1(它们会在下次启动时自动重建)
这类问题往往发生在强制关机、磁盘写满或多次异常退出后,InnoDB 恢复机制失效,不能只靠 SQL 层修复。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











