导出的SQL文件必须包含CREATE DATABASE及utf8mb4字符集声明,连接字符集需为utf8mb4,勾选CREATE DATABASE和DROP TABLE,手动启用视图、存储过程等对象导出,并禁用外键检查。
导出的 sql 文件必须包含 create database + 正确字符集声明,否则导入时大概率失败
导出前先确认连接字符集是 utf8mb4
phpMyAdmin 导出的 SQL 文件里字符串字面量(比如 INSERT INTO ... VALUES ('中文'))的编码,取决于当前连接使用的字符集,不是你本地文件保存编码。如果数据库本身用 utf8mb4 存中文或 emoji,但连接是 latin1 或 utf8,导出的 SQL 里就会出现乱码或 Incorrect string value 错误。
- 导出页顶部会显示当前连接字符集,必须是
utf8mb4;如果不是,先在 SQL 标签页执行SET NAMES utf8mb4,再回到导出页操作 - 不要只依赖数据库默认字符集——
SHOW CREATE DATABASE mydb查看实际定义,确保是CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci - 如果目标环境 MySQL 版本 ≥ 8.0,导出文件里可能出现
utf8mb4_0900_ai_ci排序规则,老版本不认,导入报错Unknown collation;此时要在「格式特定选项」里勾选「兼容性:MySQL 4.0」或手动替换排序规则
必须勾选 CREATE DATABASE 和 DROP TABLE
缺一不可。不勾 CREATE DATABASE,导入时目标库不存在,直接报错 No database selected;不勾 DROP TABLE,旧表结构残留,INSERT 可能因字段数/类型不匹配失败。
- 「导出方法」选
Custom,滚动到「对象」区域,确认Create database和Add DROP TABLE / VIEW / PROCEDURE...都已勾选 - 如果目标库已存在且你想覆盖,
DROP TABLE是安全前提;如果只想追加数据,那就别用这个备份方式,改用mysqldump --no-create-info - 导出后打开 .sql 文件,开头几行必须有类似
CREATE DATABASE `mydb` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;的语句,没有就重导
大库或含复杂对象时,别漏掉关键开关
视图、存储过程、触发器这些默认不导出,但它们是业务逻辑的一部分。漏掉一个,恢复后功能就断了。
- 在「Custom」模式下,「对象」区域手动勾选
Views、Stored procedures、Functions、Events、Triggers - 「数据」区域务必勾选
Disable foreign key checks,否则导入时外键约束会中断执行 - 文件超过 50MB 就别硬扛 phpMyAdmin:勾选
Save as file+Compression: gzipped,或直接切命令行mysqldump -u root -p --default-character-set=utf8mb4 --routines --triggers --events mydb > mydb.sql
最容易被忽略的是 SQL 文件头那几行——它决定了整个导入能否启动。很多人导出后没打开看一眼,结果导入卡在第一句 CREATE DATABASE 就停住,还以为是权限问题。真正可恢复的备份,从文件开头就能读出意图和兼容性信息。
立即学习“PHP免费学习笔记(深入)”;



















