phpmyadmin 4.9 无法原生导出真正的 gbk sql 文件,因其连接层默认仅支持 utf-8/utf8mb4,ui 无 gbk 设置入口,且 mysql 5.7+ 禁用会话级 gbk;唯一可靠方式是用 mysqldump 命令行配合 --default-character-set=gbk 参数导出。

phpMyAdmin 4.9 无法原生可靠导出 GBK 编码数据库——它默认只支持 UTF-8 / utf8mb4 连接层,且导出界面没有 GBK 字符集选项。强行操作大概率导致中文乱码、Incorrect string value 报错,或导入时 Unknown character set: 'gbk'。
为什么 phpMyAdmin 4.9 导不出真正的 GBK SQL 文件
phpMyAdmin 4.9 的导出逻辑依赖 MySQL 会话连接的字符集(character_set_client、character_set_connection),而它的 UI 层不提供设置 GBK 的入口。即使数据库表用的是 gbk_chinese_ci,只要连接层是 utf8mb4(默认),所有字符串字面量就会被 MySQL 自动转码为 UTF-8 字节写入 SQL 文件,根本不会保留 GBK 字节序列。
你看到的“UTF-8 编码”复选框,仅控制浏览器保存文件时的编码声明,不改变 MySQL 返回的内容编码方式。它对 GBK 场景完全无效。
- 执行
SET NAMES gbk在 phpMyAdmin SQL 窗口会报错:Unknown character set: 'gbk'(MySQL 5.7+ 默认禁用 GBK 会话级设置) - 导出页顶部显示的
Connection charset永远不会变成gbk - 勾选“UTF-8 编码” + 格式选 SQL → 导出的是 UTF-8 字节内容,不是 GBK
唯一可行路径:用 mysqldump 命令行生成 GBK SQL
绕过 phpMyAdmin,直接调用 MySQL 原生命令行工具,强制指定字符集和导出行为:
mysqldump -u root -p --default-character-set=gbk --skip-lock-tables --add-locks=false your_database_name > backup_gbk.sql
关键参数说明:
-
--default-character-set=gbk:强制客户端与服务端通信使用 GBK,让INSERT INTO ... VALUES ('中文')中的字面量以 GBK 字节写入文件 -
--skip-lock-tables:避免导出时执行LOCK TABLES(虚拟主机通常无权限) -
--add-locks=false:防止生成UNLOCK TABLES语句(否则导入时可能因权限失败中断) - 不要加
--no-data,除非你只要结构(但结构本身也需 GBK 字符集建库)
导出后用记事本或 VS Code 以 GBK 编码打开 backup_gbk.sql,确认中文正常显示,且文件开头无 SET NAMES utf8mb4 类语句。
导入到目标环境前必须做的三件事
即使导出成功,导入时仍可能失败。以下检查缺一不可:
- 目标 phpMyAdmin 所连 MySQL 必须启用 GBK 支持:执行
SHOW CHARACTER SET LIKE 'gbk',有结果才可继续;若为空,说明服务端已移除 GBK,只能先转 UTF-8 - 导入页的「MySQL 连接校对」下拉菜单必须手动选成
gbk_chinese_ci(不是默认的utf8mb4_general_ci) - 上传文件后,导入页底部「字符集」下拉框必须选
gbk(不是utf-8或自动检测) - 导入失败提示
Invalid default value for 'xxx'?说明表里有NOT NULL字段没设默认值,需提前在目标库执行SET sql_mode='';
真正麻烦的从来不是“怎么点按钮”,而是 GBK 在现代 MySQL 中已被边缘化:5.7 默认禁用,8.0 彻底移除。如果目标环境是较新 MySQL,别硬扛 GBK,用 iconv 或 mysql --default-character-set=utf8mb4 先做一次编码迁移更省事。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











