mysql导入不超过2m的常见原因
mysql导入文件被限制在2m以内,最常见的原因是服务器环境中对上传文件大小、mysql接收数据包大小做了默认限制。比如部分集成环境默认将上传文件大小设置为2m,或者mysql的max_allowed_packet参数值过小,无法接收超过2m的sql文件内容。另外如果是通过phpMyAdmin等web端工具导入,php的配置文件也会对上传文件大小做限制,多个限制叠加就容易出现导入失败的问题。

修改mysql配置文件提升导入限制
步骤1:找到mysql配置文件
首先需要根据mysql的安装方式找到对应的配置文件,通常linux系统下的配置文件是/etc/my.cnf或者/etc/mysql/my.cnf,windows系统下的配置文件是mysql安装目录下的my.ini。
步骤2:修改max_allowed_packet参数
在配置文件的[mysqld]区块中添加或修改max_allowed_packet参数,将其值设置为更大的数值,比如设置为64M,代表允许接收最大64M的数据包。修改完成后需要重启mysql服务让配置生效。
[mysqld] # 设置允许接收的最大数据包大小,这里设置为64M max_allowed_packet=64M
步骤3:重启mysql服务
不同系统重启mysql服务的命令不同,linux系统可以使用以下命令:
# centos系统 systemctl restart mysqld # ubuntu系统 systemctl restart mysql
windows系统可以在服务管理界面找到mysql服务,右键选择重启,或者在命令行执行以下命令:
net stop mysql net start mysql
通过web端工具导入时的配置调整
修改php配置文件
如果是通过phpMyAdmin等php开发的web工具导入,还需要修改php的配置文件php.ini,调整上传文件相关的限制参数。找到php.ini文件后,修改以下几个参数:
- upload_max_filesize:设置允许上传的最大文件大小,比如设置为64M
- post_max_size:设置post请求的最大大小,需要比upload_max_filesize大,比如设置为80M
- memory_limit:设置脚本最大内存占用,也需要大于上传文件大小,比如设置为128M
; 允许上传的最大文件大小 upload_max_filesize=64M ; post请求的最大大小 post_max_size=80M ; 脚本最大内存占用 memory_limit=128M
修改完成后需要重启php服务或者web服务器(比如nginx、apache)让配置生效。
使用命令行导入绕过大小限制
如果不想修改配置文件,也可以使用mysql命令行直接导入sql文件,这种方式不受web端上传大小的限制,只要mysql的max_allowed_packet参数足够即可。
首先登录到服务器命令行,执行以下命令导入文件:
# 登录mysql mysql -u 用户名 -p # 输入密码后进入mysql命令行,选择要导入的数据库 use 数据库名; # 导入sql文件,注意文件路径要正确 source /path/to/your/sqlfile.sql;
也可以直接在系统命令行执行导入命令,不需要进入mysql交互界面:
mysql -u 用户名 -p 数据库名 < /path/to/your/sqlfile.sql
操作注意事项
- 修改配置文件前建议先备份原文件,避免修改错误导致服务无法启动
- max_allowed_packet的值不要设置过大,避免占用过多服务器内存
- 如果sql文件过大,可以先拆分文件再分别导入,减少单次导入的压力
- 导入完成后可以检查数据是否完整,避免导入过程中出现异常导致数据缺失