必须修改宝塔中MySQL配置文件/www/server/mysql/etc/my.cnf的[mysqld]段,添加max_allowed_packet = 1G并重启MySQL服务;同时导入命令须显式指定--max-allowed-packet=1073741824、--default-character-set=utf8mb4和-f参数,且SQL文件需置于服务器本地路径。
为什么不能只用 mysql 命令裸跑
直接执行 mysql -u root -p database_name 很容易失败,不是密码错,而是环境没对齐:mysql 服务端的 <code>max_allowed_packet、客户端默认字符集、sql 文件里可能含注释或非标准语法,都会导致中途退出或乱码。尤其当文件 >500mb 时,裸命令几乎必断。
必须改的 MySQL 配置项(宝塔路径)
在宝塔面板中,MySQL 配置文件实际路径是 /www/server/mysql/etc/my.cnf。编辑它,在 [mysqld] 段落下加:
max_allowed_packet = 1G
改完必须重启 MySQL(宝塔面板 → 软件商店 → MySQL → 重启)。不重启等于没改。别去改 /etc/my.cnf 或其他路径——宝塔认的是自己装的那个。
真正能跑通的导入命令(带关键参数)
以下命令已验证适用于 utf8mb4 库、含百万级 INSERT 的 2–3GB SQL 文件:
mysql -u root -p --default-character-set=utf8mb4 --max-allowed-packet=1073741824 -f your_database_name
-
--default-character-set=utf8mb4:强制客户端用 utf8mb4,避免中文变 ? -
--max-allowed-packet=1073741824:会话级覆盖,比只改配置更保险 -
-f:跳过单条语句错误(比如重复键),继续往下导,适合备份文件含少量冗余语句 - SQL 文件必须放在服务器上,不能写
C:\xxx.sql或~/xxx.sql
导入中断了怎么办(SSH 断连/超时)
别反复重试。用 nohup 或 screen 把导入进程托管起来:
nohup mysql -u root -p --default-character-set=utf8mb4 --max-allowed-packet=1073741824 -f your_database_name /tmp/import.log 2>&1 &
然后用 tail -f /tmp/import.log 实时看进度。导入完成前,别关终端,也别杀掉这个进程。
最易被忽略的一点:导入成功返回 shell 提示符 ≠ 数据完整。必须进 MySQL 执行 SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = 'your_database_name'; 核对表数,再挑核心表查 COUNT(*)——否则可能最后一张表根本没写进去。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











