情景:我需要导入一张1.03GB的数据表,但是phpmyadmin导入文件默认为不能超过2M。因此需要修改phpmyadmin导入文件的大小限制。
1.phpmyadmin的导入也就是php完成文件上传的过程,因此先修改配置文件php.ini的上传相关参数:
1.1修改上传文件大小
upload_max_filesize 最大上传文件大小参数,默认为2M。修改成1500M,即upload_max_filesize = 1500M
post_max_size 允许POST的数据最大字节长度参数,默认为8M。修改成1500M,即post_max_size = 1500M
1.2修改php上传环境(因为php上传大文件时,页面执行时间,占用内存会变高)
max_execution_time php页面执行最大时间参数。修改成300s,即max_excution_time = 300
max_input_time php页面接受数据最大时间参数。修改成300s,即max_input_time = 300
memory_limit php页面占用的最大内存参数。修改成128M,即memory_limit = 128M
2.重新导入数据表,但是浏览器页面出现"提示已重置"等错误信息,查看nginx错误日志。
2019/02/25 14:23:10 [error] 26551#26551: *40 client intended to send too large body: 1109221482 bytes, client: 120.36.255.19, server: localhost, request: "POST /phpMyAdmin/import.php HTTP/1.1", host: "48.107.92.147" 2019/02/25 15:17:32 [error] 26664#26664: *3 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 120.36.255.19, server: localhost, request: "POST /phpMyAdmin/import.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "48.107.92.147"
即:一个是尝试发送大数据包失败,一个是连接超时。需要修改nginx配置文件nginx.conf
... http { ... client_max_body_size 1500M; #设置网页上传文件的最大值 proxy_connect_timeout 600; #10分钟 proxy_read_timeout 600; #10分钟 proxy_send_timeout 600; #10分钟 ... server { ... error_log /data/wwwlogs/nginx.error.log error; ... } ... } ...
同时设置mysql接收文件的最大值:
SHOW VARIABLES LIKE "max_allowed_packet";
SET GLOBAL max_allowed_packet = 1024*1024*1500;
3.重新导入数据表,成功。
原文地址:https://www.cnblogs.com/xincanzhe/p/10440939.html