if (get_option("abc_db_version") !== ABC_DB_VERSION) {
require_once __DIR__ . "/includes/upgrade.php";
abc_run_upgrade();
update_option("abc_db_version", ABC_DB_VERSION);
}
插件更新到 2.0 后,订单列表页顶部刷出二十多条 Undefined index: currency,数据行还是旧字段结构。回退到旧版本就恢复,新功能又全用不了。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。
原因不复杂,新版本改了字段名,升级流程只比对插件版本号没比对数据库版本号,迁移代码根本没跑。旧数据留在原字段上,新代码按新键名读取就是空值加警告。
围绕「插件升级数据迁移」排查时,命令行跑一遍比在面板里点十次有用,面板会替你做掉不少隐式操作。改完隔一天再看一次,当场正常不代表能稳住。
处理上按这个顺序:单独存一个数据库版本号 每次加载时和代码里的常量比对;版本不一致就执行迁移 改完字段再写回新版本号;迁移前备份整张表 大表分批更新不要一次跑完。
改完只确认一件事:后台不再出现 Undefined index,订单每行都有币种值,选项里的版本号和插件常量一致。
