直接修改 config.inc.php 的 $cfg['uploaddir'] 比调整 php 上传限制更稳妥,因其绕过 http 上传链路,避免浏览器中断、php 超时与内存溢出,且不受 upload_max_filesize 等参数限制,仅受 mysql max_allowed_packet 和磁盘空间约束。
直接改 config.inc.php 里的 $cfg['uploaddir'],比调 php 上传限制更稳妥——尤其当你没权限改 php.ini,或文件已超 200mb、改了也卡死时。
为什么不能只改 php.ini 的 upload_max_filesize?
即使你把 upload_max_filesize 和 post_max_size 都设成 512M,phpMyAdmin 前端上传仍可能失败:浏览器上传过程易中断、PHP 超时(max_execution_time)、内存溢出(memory_limit),且虚拟主机通常禁止修改这些参数。更重要的是,phpMyAdmin 本身对前端上传有隐式校验逻辑,大文件容易触发 No data was received to import 错误。
- 错误典型提示:
No data was received to import. Either no file name was submitted, or the file size exceeded the maximum size permitted by your PHP configuration. - 即使成功上传,解析 SQL 的过程也可能因内存不足崩溃,尤其含大量 INSERT 语句的文件
- phpMyAdmin 5.2 默认不启用
UploadDir,需手动开启,否则界面上根本不会出现“从服务器目录导入”选项
在 phpMyAdmin 5.2 中启用 UploadDir 并导入大文件
该方法绕过 HTTP 上传链路,直接读取服务器本地文件,无大小限制(仅受 MySQL 自身 max_allowed_packet 和磁盘空间约束)。
- 确认 phpMyAdmin 安装路径(如
/www/server/phpmyadmin或/usr/share/phpmyadmin),进入其根目录 - 编辑
config.inc.php(不是libraries/config.default.php,新版已弃用该文件) - 找到
$cfg['UploadDir']行(通常在文件中后段),改为:$cfg['UploadDir'] = 'upload'; - 同时设置
$cfg['SaveDir'] = 'save';(可选,用于导出临时文件) - 在 phpMyAdmin 根目录下创建两个空文件夹:
upload和save(注意权限:Web 服务用户需有读取upload目录的权限,如chown -R www:www upload/) - 将你的
bigdata.sql文件上传到upload/目录(用 FTP 或宝塔面板文件管理器均可) - 登录 phpMyAdmin → 选择目标数据库 → 点击“导入”页签 → 在“网站服务器上载目录”下拉框中选择该文件 → 执行
导入失败常见原因和应对
即使启用了 UploadDir,仍可能卡在 MySQL 层面。关键不在 phpMyAdmin,而在 MySQL 服务配置。
-
max_allowed_packet太小:默认通常为 4M,导入含长文本或 BLOB 的大 SQL 会报错Packets larger than max_allowed_packet are not allowed。需在 MySQL 配置文件(如/etc/my.cnf)中调整:max_allowed_packet = 512M,然后重启 MySQL - SQL 文件编码不匹配:若文件是 UTF8MB4 导出,但数据库默认字符集非
utf8mb4,导入时可能乱码或中断。建议在导入前执行:SET NAMES utf8mb4;,或确保目标库已建为DEFAULT CHARSET=utf8mb4 - 单条 INSERT 过长:某些导出工具(如 mysqldump)会生成超长 INSERT 语句。可在导出时加参数
--skip-extended-insert拆分为多条,或导入前用sed/split工具预处理 - phpMyAdmin 页面假死:导入过程无进度条,大文件可能需要数分钟甚至几十分钟。不要反复刷新或点击“执行”,观察服务器 CPU/IO 是否持续占用即可
真正的大文件(>500MB)别强撑 phpMyAdmin,直接走命令行:mysql -u root -p --default-character-set=utf8mb4 --max_allowed_packet=1G database_name 。UploadDir 是过渡方案,不是终极解法——它省去了改全局 PHP 配置的麻烦,但没解决 MySQL 解析效率问题。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











