MySQL最大上传50M如何修改?

在 MySQL 中,上传文件(如通过 LOAD DATA INFILE 或导入 SQL 文件)受到多个配置参数的限制。如果你遇到“最大上传 50M”的限制,通常是因为以下几个配置项的默认值限制了上传大小:

主要相关参数:

  1. max_allowed_packet
    控制 MySQL 服务器接收或发送的最大数据包大小。这是影响导入大文件的最主要参数。

  2. innodb_log_file_size(间接影响)
    如果你使用 InnoDB 存储引擎,较大的事务可能受此参数影响。

  3. 客户端或工具限制(如 phpMyAdmin、MySQL Workbench)
    有时限制不是来自 MySQL 本身,而是前端工具(例如 phpMyAdmin 的 upload_max_filesizepost_max_size)。


✅ 修改步骤

1. 修改 MySQL 配置文件(my.cnfmy.ini

找到 MySQL 的配置文件:

  • Linux/macOS: /etc/mysql/my.cnf/etc/my.cnf/usr/local/mysql/my.cnf
  • Windows: my.ini(通常在 MySQL 安装目录下)

[mysqld] 段中添加或修改以下参数:

[mysqld]
max_allowed_packet = 100M

你可以根据需要设置为 64M100M256M 等,最大支持 1GB(1073741824 字节)。

⚠️ 注意:max_allowed_packet 最大值不能超过 1GB。

2. 如果使用 LOAD DATA INFILE,确保没有其他限制

无需额外设置,只要 max_allowed_packet 足够大即可。

3. 重启 MySQL 服务

修改配置后必须重启服务才能生效。

  • Linux(systemd):

    sudo systemctl restart mysql

    sudo service mysql restart
  • macOS(Homebrew 安装):

    brew services restart mysql
  • Windows:
    在服务管理器中重启 MySQL 服务,或运行:

    net stop mysql
    net start mysql

4. 验证修改是否生效

登录 MySQL,执行:

SHOW VARIABLES LIKE 'max_allowed_packet';

你应该看到类似:

+--------------------+----------+
| Variable_name      | Value    |
+--------------------+----------+
| max_allowed_packet | 104857600|
+--------------------+----------+

(104857600 字节 = 100MB)


⚠️ 注意:如果是通过 phpMyAdmin 上传

phpMyAdmin 的上传限制是由 PHP 配置决定的,与 MySQL 无关:

修改 php.ini 文件中的以下参数:

upload_max_filesize = 100M
post_max_size = 100M

然后重启 Web 服务器(如 Apache 或 Nginx)。


✅ 总结

问题来源 解决方案
MySQL 导入限制 修改 max_allowed_packet
phpMyAdmin 限制 修改 upload_max_filesizepost_max_size
命令行导入限制 只需修改 MySQL 的 max_allowed_packet

示例:导入大 SQL 文件(命令行)

mysql -u username -p --max_allowed_packet=100M database_name < large_file.sql

即使配置文件已设置,命令行导入时也可以显式指定 --max_allowed_packet


如有其他环境(如 Docker、云数据库 RDS),请说明,配置方式可能不同。

未经允许不得转载:CLOUD技术博 » MySQL最大上传50M如何修改?