用面板把旧站导出的 SQL 灌进已经装好 WordPress 的新库 执行到一半报 Duplicate entry 主键冲突 后面几千行数据全没进去 就这样断了。日志里能对上时间点,这种反而好排。

新库是装 WordPress 时生成的 wp_posts 和 wp_options 里已经有默认数据 导入文件又带着完整的建表和插入语句 主键自然撞在一起 第一条记录就直接失败。这一点先确认清楚,后面就不用反复试。

mysql -uroot -p newdb < old.sql
mysql -uroot -p -e 'DROP DATABASE newdb'
mysql -uroot -p -e 'CREATE DATABASE newdb'
grep -c 'INSERT INTO' old.sql

这次卡住的地方就在「导入主键冲突」这一环,单独把它拎出来验证,别和其他改动混在同一次发布里。能分两步做的操作就别合成一步,中间看一眼返回值,出问题好判断。

报错里带路径的,先去看那个路径在不在、权限对不对。

处理上按这个顺序:导入前把新库清空重建 别在已经装好的库上直接灌旧数据;SQL 文件里只保留插入语句 建表那段单独拿出来先执行;真不能清空库时用 INSERT IGNORE 跳过冲突行 并把冲突的 ID 逐个记下来。

结果对不对很好判断,导入过程不再报 Duplicate entry 完成后一张表一张表核对行数与旧库完全一致。

作者 9823189