phpMyAdmin 4.4 不支持按存储引擎筛选导出且无--single-transaction快照机制,导出InnoDB表需手动查表名、勾选并禁用Data选项,大表或需一致性时应改用mysqldump命令。

phpMyAdmin 4.4 不支持直接按存储引擎筛选导出,必须手动指定表名或用命令行辅助;它也不支持 --single-transaction 的自动快照机制,InnoDB 表导出时若并发写入,可能产生不一致数据。
导出前先确认哪些表是 InnoDB
phpMyAdmin 4.4 的「导出」页没有引擎过滤功能,得先查清楚目标表。打开「SQL」标签页,执行:
SELECT TABLE_NAME FROM information_schema.TABLES WHERE ENGINE = 'InnoDB' AND TABLE_SCHEMA = 'your_database_name';
把返回的表名一个个记下来——别复制带引号或换行的输出,只取纯表名(如 users、orders)。注意排除系统库:information_schema、mysql、performance_schema。
在「导出」页手动勾选 InnoDB 表
进入数据库页 → 点「导出」→ 选「自定义」→ 滚动到「表」区域:
立即学习“PHP免费学习笔记(深入)”;
- 取消全选(默认是全选),否则会混入 MyISAM 表
- 只勾选你刚查出来的那些 InnoDB 表名
- 确保「格式」选 SQL,「导出方法」选「自定义」
- 在「对象创建选项」里,勾选「添加 DROP TABLE 语句」和「添加 CREATE TABLE 语句」
- 务必取消勾选「Data」复选框——否则即使只选了部分表,仍会导出所有 INSERT
如果表含外键,建议同时勾选「禁用外键检查」,避免导入时报错 ERROR 1215。
大表或需一致性时,改用 mysqldump 更稳
phpMyAdmin 4.4 对大表(>50MB)容易超时、中断或内存溢出,且它不识别 --single-transaction 参数(该参数从 4.5+ 才在界面选项中暴露)。此时应切到终端执行:
mysqldump -u root -p --single-transaction --skip-triggers --no-create-info your_database_name table1 table2 > innodb_data.sql
说明:
-
--single-transaction在 MySQL 层生效,与 phpMyAdmin 版本无关,能保证 InnoDB 表导出时的一致性快照 -
--no-create-info只导数据,避免混入ENGINE=MyISAM这类冗余定义 - 显式列出表名(
table1 table2)比靠 phpMyAdmin 勾选更可靠 - 若导出失败报
ERROR 2013(连接丢失),加--net-buffer-length=1M缓冲调优
导出后要验证是否真只含 InnoDB 表数据
别信界面上的勾选状态。下载完 .sql 文件后,用文本编辑器快速扫一眼:
- 全文搜索
CREATE TABLE,确认每个建表语句都带ENGINE=InnoDB(不是默认被覆盖成 MyISAM) - 搜索
INSERT INTO,确保只有你勾选的那几张表,没多出logs或cache这类 MyISAM 表 - 如果发现
SET time_zone导致后续导入失败,手动删掉这行——phpMyAdmin 4.4 生成的时区语句常不兼容旧版 MySQL
真正麻烦的是混合引擎库:phpMyAdmin 4.4 完全不提醒你哪张表是 MyISAM,全靠人工核对。一旦漏查,导出文件里就藏了个隐患。



















