Odoo14报base.user_admin无匹配唯一ID记录 误删ID=2的admin用户如何修复
故障根因说明
该报错本质是Odoo14系统全局硬编码引用的外部标识符
base.user_admin绑定的目标记录缺失,系统在加载模块、执行权限校验、运行内置业务流程时,无法定位到该标识符对应的用户记录,直接抛出校验异常。经确认触发原因是误删除了系统内置约定ID为2的admin管理员用户,连带删除了对应的外部标识符映射关系。
故障核验步骤
- 连接目标Odoo实例的PostgreSQL数据库,依次执行查询确认数据状态:
- 查询用户表校验删除状态:
SELECT id, login, name FROM res_users WHERE id = 2;无返回值即对应用户已被删除 - 查询外部标识符映射表:
SELECT * FROM ir_model_data WHERE module = 'base' AND name = 'user_admin';正常状态下会返回关联res_users.id=2的映射记录,用户被级联删除后该映射通常也会同步消失 - 排除异常绑定:执行
SELECT * FROM ir_model_data WHERE name = 'user_admin',确认没有其他自定义模块误占用该标识符造成定位错误
- 查询用户表校验删除状态:
无历史备份的修复方案
方案1:数据库层面直接重建匹配系统约定的admin用户
- 第一步:补全关联的合作伙伴记录(如果原ID=2的合作伙伴记录已被删除)
执行SQL插入res_partner表的核心记录:
INSERT INTO res_partner (id, name, email, active, create_date, write_date, create_uid, write_uid) VALUES ( 2, 'Administrator', '你的管理员绑定邮箱', true, now(), now(), 1, 1 );
- 第二步:插入强制ID为2的用户记录
根据当前res_users表的实际字段结构补全必填值,核心SQL如下:
INSERT INTO res_users (id, login, password, partner_id, active, create_date, write_date, create_uid, write_uid) VALUES ( 2, 'admin', '替换为你实际使用的bcrypt格式密码哈希', 2, true, now(), now(), 1, 1 );
如果不知道对应格式的密码哈希,可以直接从其他正常管理员用户的res_users表中复制现有password字段值,登录后再重置为自定义密码即可
- 第三步:补回缺失的外部标识符映射
让系统能通过base.user_admin定位到刚重建的用户:
INSERT INTO ir_model_data (module, name, model, res_id, noupdate, create_date, write_date) VALUES ( 'base', 'user_admin', 'res.users', 2, true, now(), now() );
- 第四步:同步完整系统权限
将数据库中现存最高权限账号(一般为最早创建的ID=1的用户)拥有的权限组同步给刚重建的admin用户:
INSERT INTO res_groups_users_rel (uid, gid) SELECT 2, gid FROM res_groups_users_rel WHERE uid = 1;
如果ID=1的用户已被删除,手动将系统内置的设置/技术设置权限组关联给ID=2的用户即可获得全权限。
方案2:通过启动参数触发内置数据重载完成修复
如果担心直接操作数据库影响数据一致性,可通过Odoo内置启动流程自动补全缺失映射:
- 临时调整数据库序列避免ID冲突:执行
ALTER SEQUENCE res_users_id_seq RESTART WITH 3;,确保后续新建用户从ID=3开始分配,预留ID=2给系统admin - 以带初始化base模块参数的方式启动Odoo服务:执行
odoo-bin -c 你的实例配置文件 --stop-after-init --init=base,系统会在启动校验阶段自动检测到base.user_admin的映射缺失,按照内置定义重建ID=2的用户记录与映射关系 - 启动完成后,登录后台在用户管理界面为重建的admin账号设置自定义密码即可正常使用
修复后校验与注意事项
- 重启Odoo服务,查看运行日志确认不再抛出
No record found for unique ID base.user_admin的异常 - 验证核心业务流程:
- 用重建的admin账号正常登录后台,确认所有菜单、功能入口可正常访问
- 检查定时任务、邮件规则、工作流中硬编码指定
base.user_admin作为执行人的流程,确认记录关联正常 - 执行一次自定义模块的升级操作,确认模块加载阶段的外部标识符校验可正常通过
- 系统硬编码全局引用ID=2的admin用户对应的
base.user_admin标识符,修复完成后禁止直接删除该用户,否则会触发全域功能异常
内容的提问来源于stack exchange,提问作者Dipen Shah
相关产品推荐
相关产品推荐

