phpMyAdmin 3.x导出需调高post_max_size等参数、选自定义导出并勾选CREATE DATABASE和DROP语句、显式设字符集为utf8mb4、大库改用mysqldump命令导出,并导出后校验SQL文件头和INSERT行数。
phpmyadmin 3.x 虽已停止维护,但在老旧生产环境(如 centos 6、php 5.4 环境)中仍常见。它能完成基本导出,但必须绕开几个关键限制才能保住核心业务数据的完整性。
max_allowed_packet 和 post_max_size 是否够用3.x 版本默认通过 HTTP POST 提交导出请求,整个 SQL 内容拼在表单里发出去。一旦数据库超过 2–3 MB,大概率触发 413 Request Entity Too Large 或页面空白——这不是 phpMyAdmin 崩了,是 Web 服务器(Nginx/Apache)或 PHP 拦截了超大请求体。
php.ini 中 post_max_size 至少设为 128M,upload_max_filesize 同步调高(即使不上传,导出逻辑也复用该配置)LimitRequestBody;Nginx 用户检查 client_max_body_size
CREATE DATABASE 和 DROP TABLE
3.x 的“快速导出”会跳过数据库创建语句,导出的 .sql 文件不含 CREATE DATABASE IF NOT EXISTS `xxx` 和 USE `xxx`。直接导入到新环境时,容易因目标库不存在或当前库非目标库而报错 No database selected。
ADD CREATE DATABASE / USE statement 和 ADD DROP TABLE / VIEW / PROCEDURE / FUNCTION / EVENT statement
ROUTINES 和 EVENTS —— 它们默认不导出utf8mb4,不能依赖默认phpMyAdmin 3.x 默认使用 utf8(即 MySQL 的 utf8,实际只支持 3 字节 UTF-8),遇到 emoji 或四字节生僻汉字会截断或转成问号。而现代业务库普遍用 utf8mb4,导出时不声明就会丢数据。
Export method,选 Custom 后展开“格式-specific options”Character set of the file 显式改为 utf8mb4
Enclose table and column names with backquotes 已勾选,避免关键字冲突mysqldump 配合 phpMyAdmin 生成命令即使调高所有限制,phpMyAdmin 3.x 在导出百兆级库时仍常因 PHP max_execution_time 超时、内存溢出或浏览器中断连接而失败。此时它唯一可靠的作用,是帮你生成一条安全可用的 mysqldump 命令。
立即学习“PHP免费学习笔记(深入)”;
Command to be executed:,后面是一整行 mysqldump 命令mysqldump -hlocalhost -uuser -p'pass' --routines --triggers --events dbname > backup.sql
真正麻烦的不是操作步骤,而是 3.x 不报错地静默丢数据:比如没勾 ROUTINES 就真不导,字符集写错就默默截断。导出后务必用 head -n 20 backup.sql 看开头是否有 CREATE DATABASE 和 DEFAULT CHARSET = utf8mb4,再用 grep -c 'INSERT INTO 确认数据行数是否合理——别等导入失败才回头查。