#module #odoo #crm #uninstallation #odoo-13
Вопрос:
Версия Odoo : 13.0.20210614
Способ воспроизведения : в приложении, приложение CRM. > удалить
Поведение : изображение 1 в прикреплении Не может быть распечатано : ОШИБКА (изображение 1 в прикреплении): (‘Запись не существует или была удалена (Запись: ir.модель.поля(9311,), Пользователь: 1)’, Нет) Несколько раз сообщалось об одной и той же ошибке, но она все еще не исправлена :
https://github.com/odoo/odoo/issues/38008
Как с этим справиться, чтобы удалить приложение crm ?
**************** ОБРАТНАЯ СВЯЗЬ **************
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,), User: 1)', None)
Ответ №1:
Моя проверка причины этой ошибки, вызванной нажатием на модуль удаления crm, показывает, что в таблице базы данных ir_model_data была запись (fk : res_id=9311), указывающая на другую таблицу ir_model_fields, где отсутствует соответствующий идентификатор pk (нет записи, имеющей pk : id=9311). Чтобы иметь возможность удалить приложение crm, единственное решение, которое я нашел — после многочасового поиска, чтобы решить его с помощью способа odoo, — это удалить запись «сирота» в ir_model_data. Поскольку это было запрещено делать с помощью оболочки oddo-bin, мне пришлось запустить удаление, поместив эту строку в конец функции python def_buttonchangestatus, доступной в пользовательском интерфейсе :
self.env['ir.model.data'].search([('res_id','=',9311)],limit=1).unlink()
Комментарии:
1. Чтобы продолжить это, вы также можете удалить запись с помощью psql:
DELETE FROM ir_model_data WHERE model = 'ir.model.fields' AND res_id = <field-id>