导出单个表应选“自定义”方法并勾选“结构和数据”,避免用默认“快速”模式;注意字符集、SQL模式一致性,大表建议分步导出,特殊场景优先使用mysqldump。
导出单个表时选错“导出方法”导致数据不全
phpmyadmin 默认用「快速」导出,但这个模式会跳过 create table 语句、忽略外键约束、也不导出注释——恢复时可能报错或丢失结构信息。真要能直接导入复用,得切到「自定义」导出。
- 点击表名进入该表的「浏览」页 → 顶部点「导出」标签
- 在「导出方法」下拉框里,**必须选「自定义」**,别信默认值
- 勾上「添加 DROP TABLE / VIEW / PROCEDURE / FUNCTION / EVENT 语句」——避免恢复时冲突
- 「格式」选
SQL(别选 CSV 或 JSON,那不是结构备份)
导出内容没包含数据或只含结构,参数混淆了
「导出什么」区域有三个单选按钮:仅结构、仅数据、结构和数据。新手常点错,尤其想备份完整表却误选了 仅结构,结果文件里全是 CREATE TABLE 没一行 INSERT。
- 日常表级备份,99% 场景该选
结构和数据 - 如果表超大(比如 >100MB),可先选
仅结构导出建表语句,再用mysqldump --no-create-info单独导数据——phpMyAdmin 界面导大数据容易超时或内存溢出 - 确认右下角「最大执行时间」没设成
0(即不限制),否则大表导出中途会中断,且不提示
导出后恢复失败,常见于字符集和 SQL 模式不一致
导出文件头部的 SET NAMES 和 SET SQL_MODE 是关键。如果源库是 utf8mb4,而目标库默认用 utf8,或者导出时开了 STRICT_TRANS_TABLES 但目标库没开,mysql 命令行或 phpMyAdmin 导入时就会报错。
- 打开导出的
.sql文件,检查开头几行是否有SET NAMES utf8mb4—— 如果没有,手动加一行(尤其跨服务器迁移时) - 导出页底部的「SQL 兼容性」下拉菜单,选
MYSQL40以外的任意项(如NONE或MYSQL323)才能保留现代特性;但若目标 MySQL 版本很老( - 导出前先在源库执行
SELECT @@sql_mode;,记下结果,恢复前在目标库执行相同命令设好模式
导出按钮灰掉或点击无反应,其实是权限或配置限制
不是所有用户都有 SELECT 权限,更不一定有 LOCK TABLES——而 phpMyAdmin 自定义导出默认会尝试加表锁。没权限时按钮变灰,或点完弹空下载、返回 500 错误。
- 进「用户账户」页查当前用户对这张表的权限,至少要有
SELECT+SHOW VIEW(视图表需要) - 如果确定权限够但还是导不出,去
config.inc.php检查是否禁用了导出功能:$cfg['Servers'][$i]['DisableIS'] = true;或$cfg['EnableQbe'] = false;都会影响 - 临时绕过:用命令行
mysqldump -u user -p database table_name > table.sql,比界面更稳
自定义 里的「对象创建选项」和「数据创建选项」哪几个该勾哪几个该不勾,得看具体场景——这时候别硬靠界面,先 mysqldump --help 扫一眼对应参数更省事。











