微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Odoo v13:无法卸载 crm 应用:记录不存在或已被删除记录:ir.model.fields(9311,),用户:1

如何解决Odoo v13:无法卸载 crm 应用:记录不存在或已被删除记录:ir.model.fields(9311,),用户:1

odoo 版本:13.0.20210614

重现方式:在应用程序中,CRM 应用程序。 > 卸载

行为: 附上图 1 无法卸载:错误(附件中的图像 1): ('记录不存在或已被删除 (记录: ir.model.fields(9311,),User: 1)',None)

enter image description here

多次报告相同的错误,但仍未修复:

https://github.com/odoo/odoo/issues/38008

enter image description here

卸载crm App如何处理?

**************** 回溯 **************

2021-06-18 14:21:52,779 6 INFO samadeva-oerp-brstaging-2702918 odoo.addons.base.models.ir_module: ALLOW access to module.module_uninstall on ['sale_crm','crm_enterprise','crm_sms','website_crm','website_crm_sms','mass_mailing_crm','crm'] to user __system__ #1 via 86.243.106.83 

2021-06-18 14:21:52,800 6 WARNING samadeva-oerp-brstaging-2702918 odoo.modules.loading: Transient module states were reset 

2021-06-18 14:21:52,801 6 ERROR samadeva-oerp-brstaging-2702918 odoo.modules.registry: Failed to load registry 
Traceback (most recent call last):
File "/home/odoo/src/odoo/odoo/api.py",line 745,in get
def get(self,record,field,default=nothing):
value = self._data[field][record._ids[0]]
KeyError: 9311

During handling of the above exception,another exception occurred:

Traceback (most recent call last):

File "/home/odoo/src/odoo/odoo/fields.py",line 1037,in __get__
value = env.cache.get(record,self)

File "/home/odoo/src/odoo/odoo/api.py",line 751,in get
raise CacheMiss(record,field)
odoo.exceptions.CacheMiss: ('ir.model.fields(9311,).model',None)

During handling of the above exception,another exception occurred:

Traceback (most recent call last):

File "/home/odoo/src/odoo/odoo/modules/registry.py",line 86,in new
odoo.modules.load_modules(registry._db,force_demo,status,update_module)

File "/home/odoo/src/odoo/odoo/modules/loading.py",line 494,in load_modules
Module.browse(modules_to_remove.values()).module_uninstall()

File "<decorator-gen-61>",line 2,in module_uninstall

File "/home/odoo/src/odoo/odoo/addons/base/models/ir_module.py",line 73,in check_and_log
return method(self,*args,**kwargs)

File "/home/odoo/src/odoo/odoo/addons/base/models/ir_module.py",line 478,in module_uninstall
self.env['ir.model.data']._module_data_uninstall(modules_to_remove)

File "/home/odoo/src/odoo/odoo/addons/base/models/ir_model.py",line 1898,in _module_data_uninstall
model = self.pool.get(ir_field.model)
File "/home/odoo/src/odoo/odoo/fields.py",line 1050,in __get__
_("(Record: %s,User: %s)") % (record,env.uid),odoo.exceptions.MissingError: ('Record does not exist or has been deleted (Record: ir.model.fields(9311,None)

解决方法

我检查了Click on uninstall crm module触发的这个错误的原因,发现数据库表ir_model_data有一条记录(fk:res_id=9311)指向另一个表ir_model_fields,其中对应的pk id丢失(没有 pk 记录:id=9311)。为了能够卸载 crm 应用程序,我找到的唯一解决方案 - 在搜索数小时后使用 odoo 方式解决它 - 是删除 ir_model_data 中的“孤儿”记录。因为不允许使用oddo-bin shell 执行此操作,所以我必须通过将此行放在可在 ui 上单击的 def_buttonchangestatus python 函数的末尾来触发删除:

   self.env['ir.model.data'].search([('res_id','=',9311)],limit=1).unlink()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。