导出时选错格式或PHP超时会导致导入失败:需确认MySQL版本避免兼容选项,删除不支持的字符集声明,并调高PHP的max_execution_time、post_max_size等参数;超大库应使用命令行导入。

导出时选错格式导致导入失败
宝塔默认导出的 .sql 文件是 UTF-8 编码,但如果你在「导出设置」里勾选了「兼容 MySQL 5.6」或「结构+数据分离」,实际生成的 SQL 可能含不兼容语法(比如 ROW_FORMAT=DYNAMIC),在低版本 MySQL 或某些云数据库上直接报错 ERROR 1064。
- 导出前确认目标环境 MySQL 版本,新版(5.7+)建议取消勾选「兼容 5.6」
- 避免勾选「仅导出结构」或「仅导出数据」——除非你明确知道要分步操作
- 如果导出后文件开头有
SET NAMES utf8mb4;,但目标库不支持utf8mb4(比如老版本 MySQL 5.5),导入会卡在字符集设置处,可手动删掉这行再导入
导入超时或中断:不是网络问题,是 PHP 超时限制
宝塔用 PHP 脚本执行导入,实际受 max_execution_time 和 post_max_size 两个参数控制。哪怕你上传的是 20MB 的 .sql 文件,也可能在进度条走到 80% 时突然跳回登录页——这不是数据库挂了,是 PHP 进程被强制终止了。
- 进宝塔 → 「软件商店」→ 找到当前 PHP 版本 → 「设置」→ 「配置修改」→ 把
max_execution_time改成600(10 分钟),post_max_size和upload_max_filesize都调到200M - 改完必须点「重载配置」,否则无效
- 超大库(>100MB)别硬扛 Web 导入,直接走命令行:
mysql -u root -p database_name
导入后中文乱码:编码没对齐,不是字体问题
常见现象是字段值变成 ?????? 或一堆问号,本质是「客户端连接编码」和「表定义编码」不一致。宝塔面板本身用 UTF-8,但数据库、表、甚至字段可能还是 latin1 或 utf8(非 utf8mb4)。
- 导入前先查目标库编码:
SHOW CREATE DATABASE database_name;,如果不是DEFAULT CHARACTER SET = utf8mb4,建库时就得指定:CREATE DATABASE xxx DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_unicode_ci; - 导入后立刻执行:
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; - 别信宝塔界面上「字符集」下拉框显示的是 utf8mb4——它只改显示,不改实际存储,得靠 SQL 命令生效
权限不足导致导入失败:root 不一定真有全部权限
宝塔默认给的 root 用户,在某些系统(如 CentOS 7 + MySQL 8.0)下实际是 auth_socket 插件认证,不走密码验证,但 PHP 导入脚本依赖密码连接,就会报 Access denied for user 'root'@'localhost'。
- 进 SSH,用
mysql -u root -p登录后执行:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码'; - 然后在宝塔「数据库」页面,编辑该数据库用户,把密码重新保存一次(触发权限刷新)
- 如果用的是远程数据库(比如阿里云 RDS),宝塔根本连不上,此时只能本地 mysqldump + 命令行导入,面板工具完全失效

















