phpMyAdmin 导出 JSON 字段需关闭“转义内容”和“使用反斜杠转义”选项,否则双引号被转义为"导致 SQL 导入失败;仍可能因换行符或单引号出错,建议改用 mysqldump 或 Adminer。

phpMyAdmin 默认导出 JSON 字段时会转义双引号,导致导出的 SQL 文件在导入时因语法错误失败——必须手动调整导出设置或后处理 SQL。
导出前必须关闭「转义内容」选项
phpMyAdmin 的「自定义导出」里勾选了 转义内容(默认开启),会导致 JSON 字符串中的双引号被写成 ",MySQL 解析时直接报错 ERROR 1064。这不是数据问题,是导出逻辑把合法 JSON 当普通字符串处理了。
- 进入表页面 → 点击「导出」→ 选择「自定义」
- 展开「格式特定选项」→ 找到
转义内容→ 取消勾选 - 同时确认
使用反斜杠转义也未勾选(它和前者作用重叠,都可能破坏 JSON) - 导出格式选
SQL,不要选 CSV 或 JSON 格式(CSV 无法保留字段类型,JSON 格式不导出建表语句)
JSON 字段值含换行或单引号时仍可能出错
即使关了转义,如果 JSON 值本身含换行符(
)或未闭合的单引号(如 '{"name": "O'Connor"}'),phpMyAdmin 生成的 INSERT 语句仍可能语法异常——因为它的 SQL 构造器对嵌套引号和空白字符处理较粗糙。
- 导出后用文本编辑器打开 SQL 文件,搜索
INSERT INTO `表名`,检查 JSON 字段值是否被包裹在单引号内且内部无未转义单引号 - 若发现类似
VALUES ('{"name": "O'Connor"}'),需手动改为VALUES ('{"name": "O''Connor"}')(MySQL 用两个单引号表示字面量) - 换行符建议先在数据库里用
REPLACE(json_col, ' ', '\n')预处理,导出后再替换回来(仅限开发环境)
更稳妥的做法:用 mysqldump 替代 phpMyAdmin
phpMyAdmin 是 Web 封装层,对 JSON 这类新类型支持滞后;而 MySQL 原生命令行工具从 5.7.8 起就原生兼容 JSON 字段导出,无需额外配置。
- 执行:
mysqldump -u 用户名 -p 数据库名 表名 > table_with_json.sql - 它自动用
JSON_OBJECT()或字面量形式输出,且 INSERT 语句中 JSON 值保持原始格式 - 若服务器没开放 shell 权限,可让运维临时执行,或改用 Adminer(比 phpMyAdmin 对 JSON 支持更好)
- 注意:mysqldump 导出的文件默认含
SET FOREIGN_KEY_CHECKS=0,导入时需确保目标库兼容
真正麻烦的不是 JSON 本身,而是 phpMyAdmin 把所有字符串一视同仁地加引号、转义——它不区分字段类型。只要导出路径绕不开 phpMyAdmin,就得在「关转义」和「人工校验」之间多走一步。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











