在Odoo的res.partner模型添加两个Many2one字段触发数据库错误
错误原因解析
这个报错的本质是数据库字段类型不匹配:
- Odoo默认将
res.partner的主键id设为integer(整数)类型,当你定义关联到res.partner的Many2one字段时,Odoo会自动在数据库中创建对应整数类型的字段,用于存储关联对象的ID。 - 但你的数据库里,新添加的
field2(或其中一个字段)被设置成了character varying(字符串)类型。PostgreSQL执行关联查询时,需要拿字符串类型的字段和整数类型的res.partner.id做相等判断,而数据库没有支持这种跨类型匹配的运算符,因此直接抛出错误。
常见触发场景:
- 之前手动修改过数据库表的字段类型,把新增字段改成了字符串
- 模块升级/迁移过程中出现异常,导致字段类型创建错误
- 存在自定义扩展逻辑,强制修改了字段的数据库类型
解决方向:
- 先检查
res_partner表的field1和field2字段类型,确认是否为整数类型 - 如果类型错误,备份数据后手动将字段修改为
integer类型 - 或者删除错误字段,重新运行模块升级,让Odoo自动生成正确的字段类型
内容的提问来源于stack exchange,提问作者Arthur Fortin
相关产品推荐
相关产品推荐

