phpMyAdmin 4.9 导出 UTF-8 数据库需同步对齐三层字符集:连接层(SET NAMES utf8mb4)、内容编码层(自定义导出勾选UTF-8编码)、文件声明层(生成SQL含CREATE DATABASE ... CHARACTER SET utf8mb4);大库或复杂对象应改用mysqldump。
phpmyadmin 4.9 导出 utf-8 数据库,关键不是“选对格式”,而是**同步对齐三层字符集**:数据库连接层、导出内容编码层、生成文件声明层。缺一不可,否则中文、emoji 或带重音符号的字段必然乱码或报错 incorrect string value。
导出前必须确认连接字符集是 utf8mb4
phpMyAdmin 4.9 默认连接可能仍是 utf8(即 MySQL 的旧版三字节 UTF-8),它不支持 emoji 和部分四字节 Unicode 字符。即使数据库表用的是 utf8mb4,连接层不对,导出时就会截断或报错。
- 在 phpMyAdmin 左上角 SQL 窗口执行:
SET NAMES utf8mb4;,再刷新「导出」页——此时顶部应显示Connection charset: utf8mb4 - 如果显示
utf8或latin1,导出按钮点了也白点,后续所有设置都无效 - 若无权限执行
SET,说明服务器配置限制了会话变量修改,需联系管理员或改用mysqldump命令行
自定义导出时勾选「UTF-8 编码」且格式选 SQL
「快速导出」在 4.9 版本中默认不启用 UTF-8 内容编码,必须切到「自定义导出」才能控制。
- 点击「导出」→「导出方法」选
Custom→ 展开「格式特定选项」 - 确保「格式」下拉菜单选的是
SQL(不是 CSV/JSON) - 勾选
UTF-8 编码复选框——这是最关键的一步,它让导出的 SQL 文件里所有字符串字面量(如INSERT INTO ... VALUES ('中文'))以 UTF-8 字节序列写入,而非依赖浏览器猜测 - 别信「文件名后缀是 .sql 就安全」:没勾这一项,哪怕内容是中文,文件里存的也是乱码字节
务必勾选 CREATE DATABASE 和 DROP TABLE
导出 SQL 文件不只是备份数据,更是可复现的部署脚本。phpMyAdmin 4.9 的默认导出不包含建库语句,恢复时容易因目标库已存在或字符集不匹配而失败。
- 在「对象创建选项」区域,勾选
添加 DROP TABLE / VIEW / PROCEDURE / FUNCTION / EVENT 语句 - 同时勾选
添加 CREATE DATABASE / TABLE 语句 - 这两项能让导出文件开头包含类似
CREATE DATABASE `mydb` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;,避免手动建库时用错默认字符集 - 如果只勾了
DROP TABLE没勾CREATE DATABASE,恢复时会报错Unknown database 'mydb'
大库或含视图/存储过程时别用 phpMyAdmin 4.9
phpMyAdmin 4.9 是较老版本(2019 年发布),内存和超时限制硬,导出 >50MB 的库或含复杂视图、触发器的库极易中断、卡死或生成不完整 SQL。
立即学习“PHP免费学习笔记(深入)”;
- 中断后下载的 .sql 文件末尾常是半截
INSERT,用文本编辑器打开能看到明显截断痕迹 - 视图定义若含换行或注释,4.9 有时会漏掉
CREATE ALGORITHM=UNDEFINED等关键前缀,导致恢复时报语法错误 - 真正稳妥的做法是切到服务器命令行:
mysqldump -u user -p --default-character-set=utf8mb4 --routines --triggers mydb > mydb.sql - 导出完用
file mydb.sql确认第一行是/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;,说明字符集声明已嵌入



















