phpMyAdmin导出未选兼容模式导致导入失败,应改用“自定义”模式并设SQL兼容模式为MYSQL40,或手动将utf8mb4_unicode_ci替换为utf8_general_ci、utf8mb4替换为utf8;同时须提前创建目标数据库并设为utf8mb4字符集,导入后及时更新wp_options表中的siteurl和home值。

phpMyAdmin导出时没选兼容模式,导致导入失败
默认“快速”导出会保留原环境的字符集和校对规则(比如 utf8mb4_unicode_ci),但线上 MySQL 版本可能低于 5.5.3,或配置禁用了 utf8mb4。这时导入就会报 #1273 – Unknown collation 或 #1253。
解决办法很简单:导出前切到“自定义”模式,把 SQL 兼容模式 设为 MYSQL40。这个选项会强制将所有 utf8mb4 替换为 utf8,校对规则也降级为 utf8_general_ci,大幅提升跨环境兼容性。
- 别用“快速”导出迁移生产环境——它只适合同版本、同配置的备份
- 如果必须用“快速”,导出后手动用 VS Code 或 Notepad++ 打开 .sql 文件,先全局替换
utf8mb4_unicode_ci→utf8_general_ci,再替换utf8mb4→utf8(顺序不能反) - 导出页面底部的“显示所有选项”要勾上,确保“添加 DROP TABLE / VIEW / PROCEDURE / FUNCTION / EVENT”被启用,避免表已存在却跳过报错
线上数据库没提前建好,或字符集不匹配
phpMyAdmin 导入不是“覆盖”,而是“执行 SQL”。如果目标数据库不存在,或存在但字符集是 latin1,而 SQL 文件里写的是 CREATE DATABASE ... CHARACTER SET utf8mb4,就会因权限或配置冲突失败。
正确做法是:先登录线上 phpMyAdmin,手动创建空数据库,并明确指定字符集为 utf8mb4、校对规则为 utf8mb4_unicode_ci(哪怕你导出时用了兼容模式,这步也能防意外)。
立即学习“PHP免费学习笔记(深入)”;
SEO关键词密度优化与页面审计技能。使用场景:①提供页面路径与关键词进行SEO优化;②提升页面关键词密度;③提升搜索引擎排名;④进行SEO审计(meta标签、OG、hreflang等)。触发词:关键词密度、SEO优化、关键词优化等。
- 创建数据库时不要依赖导入脚本自动建库——很多主机限制
CREATE DATABASE权限 - 如果线上 MySQL 确实不支持
utf8mb4(如旧版 5.0),那就必须在导出端降级,不能指望导入时自动转换 - 检查数据库列表页右侧“排序规则”列,确认新库的排序规则和你预期一致,不是
utf8mb4_0900_ai_ci这类高版本专属规则
wp-config.php 的 DB_HOST 和线上 MySQL 监听方式不一致
本地导出时用 localhost 成功,但线上环境 MySQL 可能只监听 TCP(如 127.0.0.1),或只走 socket(/var/run/mysqld/mysqld.sock)。而 localhost 在 MySQL 协议里特指 socket 连接,和 127.0.0.1 不等价。
现象是:phpMyAdmin 能登录,但 WordPress 导入后访问报 Error establishing a database connection,且错误日志里出现 Access denied for user 'wpuser'@'127.0.0.1' —— 说明账号 'wpuser'@'localhost' 存在,但 PHP 实际连的是 'wpuser'@'127.0.0.1',权限不匹配。
- 线上
wp-config.php中的DB_HOST值,必须和 phpMyAdmin 登录时填的 host 完全一致(比如 phpMyAdmin 用127.0.0.1登录成功,DB_HOST就不能写localhost) - 检查 MySQL 用户权限:运行
SELECT User, Host FROM mysql.user WHERE User = 'wpuser';,确认是否存在对应Host的记录 - 临时加
define('WP_DEBUG', true);,看真实报错末尾是否带具体 host,这是最准的判断依据
导入后没更新 siteurl 和 home,导致重定向或白屏
导出的 SQL 包含 wp_options 表里的 siteurl 和 home 字段,值仍是本地地址(如 http://localhost/wordpress)。直接导入线上后,WordPress 会尝试从本地地址加载 CSS、JS,结果全部 404,页面渲染失败,看起来像数据库错误。
这不是导入失败,而是导入后必做的清理动作。必须在导入完成、网站首次访问前,立刻修正这两个值。
- 登录线上 phpMyAdmin → 选中数据库 → 找到
wp_options表(前缀以你实际为准)→ 点“浏览” → 找到option_name为siteurl和home的两行 → 点“编辑” → 把option_value改成线上域名(如https://example.com) - 如果无法进 phpMyAdmin,可用 WP-CLI:运行
wp rewrite structure '/%postname%/' --hard前先wp rewrite structure '/%postname%/' --hard并不解决此问题;必须用wp option update siteurl 'https://example.com'和wp option update home 'https://example.com' - 注意 HTTPS:如果线上启用了 SSL,
siteurl和home必须带https://,否则后台可能无限重定向
siteurl 没改、DB_HOST 匹配错、或字符集在数据库层和表层不统一——这三处不出现在导入报错里,但会让整个站点瘫痪。


















