wp core update-db --network wp site list --field=url | while read url; do wp core update-db --url="$url"; done
网络后台升级到 WordPress 6.4,主站正常,200 个子站全白屏,日志报 Table 'db.wp_2_options' doesn't exist。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。
原因不复杂,升级只跑了主站的 dbDelta,子站表没有逐个升级,升级过程在 wp_2_options 处中断。wp_blogs 里登记的子站数量与实际表数量对不上。
「网络升级子站白屏」排查到最后往往是很小的一处差异,前面那些复杂猜测可以先放一放。改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。
验证用真实数据走一遍,测试数据太干净,边界情况根本碰不到。能分两步做的操作就别合成一步,中间看一眼返回值,出问题好判断。
报错里带路径的,先去看那个路径在不在、权限对不对。同一份配置存在多处的,先确认改的是被加载的那一份。
新版本先放一台机器上跑一天再全量,问题一般在这段时间暴露。
处理上按这个顺序:访问 network/upgrade.php 触发子站升级;用 wp core update-db --network 补跑;核对每个子站的 db_version。
改完只确认一件事:所有子站打开正常,wp_2_options 里的 db_version 与主站一致。
