导出的SQL文件没有INSERT语句是因为“Data”复选框未勾选,phpMyAdmin在Custom模式下默认不导数据,仅导结构;需手动勾选Data选项并确认其处于启用状态,否则只生成CREATE TABLE语句。
导出的 sql 文件里没有 insert 语句,或者压根没生成任何表数据——不是导出失败,而是你根本没让 phpmyadmin 导数据。
导出页的 “Data” 复选框被取消勾选了
这是最常见、也最容易忽略的原因。phpMyAdmin 4.9+ 默认在 Export 页面显示一个独立的 Data 复选框(位于 Format-specific options 区域),它和 “Structure” 是分开控制的。
- 哪怕你选了
SQL格式、用了Custom模式、甚至勾了Add DROP TABLE,只要Data没勾,就只导CREATE TABLE,不导任何INSERT - Quick 模式下这个选项默认是勾上的,但 Custom 模式下它可能被自动取消——尤其你之前导过纯结构,再切回来时状态会保留
- 检查方法:导出前滚动到页面底部,找到
Data这个复选框,确认它是 ✅ 状态;导出后打开 .sql 文件,搜INSERT INTO,至少应有一条匹配
导出目标不是表,而是数据库或视图/存储过程
左侧导航栏点的是数据库名,但实际导出时可能只选中了部分对象,或者误点了视图、函数等非表对象。
- 进入数据库页后,顶部菜单栏的
Export是针对整个数据库的;但如果先点了某张表再点 Export,就只导那张表——此时若该表为空,结果自然为空 - Custom 模式下,“Object” 区域里如果只勾了
Views、Stored procedures,而没勾Tables,导出文件里就不会有表结构和数据 - 执行
SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = 'your_db'确认表确实存在;再查SELECT table_name, table_rows FROM information_schema.tables WHERE table_schema = 'your_db'看行数是否为 0
权限不足导致 SELECT 被静默跳过
phpMyAdmin 导出数据依赖 SELECT 权限。没这权限时,它不会报错,而是悄悄跳过数据导出阶段。
- 运行
SHOW GRANTS FOR CURRENT_USER,确认结果包含GRANT SELECT ON `your_db`.* TO ... - 如果只有
USAGE或仅含CREATE/DROP权限,Data选项即使勾了也无效 - 某些托管环境会限制
LOCK TABLES权限,这虽不影响 SELECT,但可能导致导出中断且无提示——表现为文件结尾突然截断,最后一张表没 INSERT
表里真没数据,但你以为有
开发库常建好表结构就停手,没插测试数据。导出空文件反而是正确行为。
立即学习“PHP免费学习笔记(深入)”;
- 别只看 phpMyAdmin 表列表里的“浏览”图标,点进去看具体内容;有些表有自增主键但
0行记录 - 用
SELECT COUNT(*) FROM `table_name`直接查行数,比肉眼判断可靠 - 如果表用的是
MEMORY引擎,服务重启后数据丢失,此时导出必然为空
真正容易被忽略的是:Custom 模式下 Data 开关的状态是独立记忆的,换数据库、换表、甚至刷新页面都可能保留上次选择。每次导出前花两秒确认那个复选框,比事后反复重试快得多。



















