迁移Revive Ad Server至新服务器后登录提示‘user_id’字段不存在
解决Revive Ad Server迁移后登录时
Unknown column 'user_id' in 'field list'错误 你遇到的这个问题,本质是数据库表结构没跟上Revive Ad Server从OpenX升级后的变更——ox_session表缺失了user_id字段,导致系统执行会话更新时出错。下面是一步步的排查和修复方案:
1. 先确认数据库表结构问题
首先登录新服务器的MySQL控制台,检查ox_session表的结构:
DESCRIBE ox_session;
如果结果里确实没有user_id这一行,说明你恢复的备份要么是未完成OpenX到Revive升级的旧数据库,要么备份时只导出了数据、没同步最新表结构。
2. 重新运行Revive升级脚本
Revive在升级时会自动更新数据库结构,你可以重新触发升级流程来补全缺失的字段:
- 确保新服务器上的Revive文件是完整的v4.11版本,然后访问后台升级页面:
http://你的新服务器地址/revive/www/admin/install.php - 选择"Upgrade"选项,跟着向导走,系统会自动检测数据库结构差异,完成包括
ox_session表在内的结构更新。 - 👉 执行前记得再备份一次当前数据库,以防意外。
3. 手动修复表结构(如果升级脚本失效)
要是升级脚本没法正常运行,你可以直接执行SQL添加缺失的字段:
ALTER TABLE ox_session ADD COLUMN user_id INT(11) DEFAULT NULL AFTER session_id;
执行完成后,再尝试登录后台,看看错误是否消失。
4. 清除系统缓存
有时候表结构修复了,但缓存的旧结构信息还会导致问题,需要清理Revive的缓存:
- 找到Revive安装目录下的
var/cache文件夹,删除里面所有文件和子文件夹(别删cache文件夹本身)。 - 也可以用命令行快速清理:
rm -rf /你的Revive安装路径/var/cache/*
5. 最后检查数据库连接配置
再确认一遍conf.php里的数据库主机、用户名、密码、库名是否完全正确,避免因为连错数据库导致的结构不匹配。
内容的提问来源于stack exchange,提问作者Erich
相关产品推荐
相关产品推荐

