需修改php.ini中upload_max_filesize和post_max_size为相同较大值(如512M),再调大max_execution_time、memory_limit和max_input_time,最后重启Apache;若仍失败,应改用mysql命令行直接导入。

phpMyAdmin 显示 “文件超出了 php.ini 中定义的最大允许大小” 怎么办
这是最典型的导入失败提示,对应错误信息是 File exceeds the maximum allowed size。根本原因不是 phpMyAdmin 本身限制,而是 PHP 的上传机制在拦截——upload_max_filesize 和 post_max_size 这两个 php.ini 配置项共同卡住了入口。
实操上要改两处(顺序不能错):
- 先确认 XAMPP 控制面板里 Apache 正在运行,点击
Config → PHP (php.ini)打开配置文件 - 搜索并修改:
upload_max_filesize = 512M(建议设为比目标 SQL 文件大 20%) - 继续搜索并同步改:
post_max_size = 512M(必须 ≥upload_max_filesize,否则仍会失败) - 保存后务必重启 Apache,否则修改不生效
改完 php.ini 还报错 “Script timeout passed” 或页面空白
这说明 PHP 脚本执行时间不够,尤其对几百万行的 SQL 文件,解析+执行可能耗时数分钟。max_execution_time 默认 30 秒,远远不够。
继续在同一个 php.ini 文件中调整:
立即学习“PHP免费学习笔记(深入)”;
- 搜
max_execution_time,改为max_execution_time = 600(10 分钟足够多数场景) - 顺手检查
memory_limit,设为memory_limit = 512M或更高,避免解析大 SQL 时内存溢出 - 如果导入中途断连,再加一行:
max_input_time = 600(控制输入数据解析时限)
即使调高限制,phpMyAdmin 仍卡住或返回 500 错误
这时候不是参数问题,而是 phpMyAdmin 自身架构瓶颈:它把整个 SQL 文件读进 PHP 内存再逐条执行,遇到含大量 INSERT、CREATE TABLE 的文件极易崩溃。
更稳的替代方案是绕过 phpMyAdmin,直接用命令行导入:
- 打开终端(Windows 用 XAMPP 自带的
shell或 CMD),cd 到 XAMPP 安装目录下的mysql\bin - 执行:
mysql -u root -p database_name - 密码为空直接回车;若设了密码,输完密码后按回车(注意:密码不会显示)
- 该方式不走 PHP,不受任何 php.ini 限制,且速度更快、失败率更低
导入成功但部分中文乱码或表结构异常
大型 SQL 文件常含 SET NAMES utf8mb4 或编码声明,但 phpMyAdmin 可能忽略或解析错位。命令行导入时若没指定字符集,MySQL 默认用 latin1,导致中文变问号。
安全做法是在命令行导入时显式指定:
mysql -u root -p --default-character-set=utf8mb4 database_name- 确保原 SQL 文件头有
/*!40101 SET NAMES utf8mb4 */;或类似声明 - 如果已导入出错,别急着重导,先用
SHOW CREATE TABLE table_name检查表字符集是否为utf8mb4,不是就用ALTER TABLE ... CONVERT TO CHARACTER SET utf8mb4补救
真正麻烦的从来不是改几个配置,而是改完忘了重启 Apache,或者命令行导入时路径写错、数据库名拼错、漏掉 --default-character-set 参数——这些细节卡住的时间,往往比调参本身还长。



















