Hi Odoo Community,
I recently encountered a similar issue while working with the l10n_es_partner module in Odoo, where some views referenced in ir.model.data were causing errors because the corresponding records in ir.ui.view didn’t exist. I wanted to share how I resolved it in case it helps someone else facing a similar problem.
The Problem
When I tried to update or work with the l10n_es_partner module, I kept getting errors related to views (e.g., view_partner_form). After some investigation, I found that the ir.model.data table contained records pointing to views in ir.ui.view, but those views were missing from the database. This mismatch caused the module to fail when trying to load or update its views.
To confirm this, I ran the following SQL query to inspect the ir.model.data entries for the l10n_es_partner module:
SELECT *
FROM ir_model_data
WHERE module = 'l10n_es_partner'
AND model = 'ir.ui.view';
The result showed four records:
id | create_uid | create_date | write_date | write_uid | noupdate | name | module | model | res_id | studio |
---|
9913 | 1 | 2017-09-09 10:23:28.440695 | 2025-02-21 11:44:31.771172 | 1 | f | view_res_bank_form | l10n_es_partner | ir.ui.view | 584 | |
9915 | 1 | 2017-09-09 10:23:28.440695 | 2025-02-21 11:44:31.771172 | 1 | f | view_partner_form | l10n_es_partner | ir.ui.view | 586 | |
9916 | 1 | 2017-09-09 10:23:28.440695 | 2025-02-21 11:44:31.771172 | 1 | f | view_partner_simple_form | l10n_es_partner | ir.ui.view | 587 | |
1413213 | | 2025-02-21 11:42:40.983692 | 2025-02-21 11:44:31.771172 | | f | l10n_es_partner_import_wizard | l10n_es_partner | ir.ui.view | 5848 | |
(4 rows)
However, when I checked the ir.ui.view table for these res_id values (584, 586, 587, 5848), those view records didn’t exist. This inconsistency was the root of the issue.
The Solution
To fix this, I decided to clean up the ir.model.data table by removing the orphaned references. I ran the following SQL command:
DELETE
FROM ir_model_data
WHERE module = 'l10n_es_partner'
AND model = 'ir.ui.view';
This deleted the four problematic records (DELETE 4 confirmed the operation). After that, I updated the l10n_es_partner module (either via the Odoo UI with -u l10n_es_partner or by restarting the server), and the views were recreated correctly from the module’s XML definitions. The errors disappeared, and everything worked as expected.
Why This Worked
The ir.model.data table links XML IDs to database records (like views in ir.ui.view). If a view is deleted or fails to be created but its ir.model.data entry remains, Odoo assumes the view still exists and throws errors when it can’t find it. By removing the stale entries, I allowed the module to regenerate the views from scratch during the update.
Caution
- Backup First: Always back up your database before running DELETE queries, as this directly modifies data.
- Check Your Case: This solution applies if the views are truly missing. If they exist but are broken, you might need to debug the XML or module instead.
Final Thoughts
This issue might occur due to interrupted module installs, manual deletions, or database migrations gone wrong. If you’re facing similar view-related errors, I recommend checking ir.model.data against ir.ui.view to ensure consistency.
Hope this helps someone out there! Let me know if you have questions or a better approach.
Best regards,
This is not default behavior, I have done thousands of times. It only hapoens to me if the new view has errors. You may check if you also change python files in the same update, in this case you should restart the Odoo service (not server).
I know, this is not the way it should be. Next time this happens (i hope not) i am going to try to remove the view-xml that causes the error so that all the view-records in the database are removed and try after that to reinstall the module. Hope that that does the trick. Because the problem with uninstalling and reinstalling is that you lose all the data in the fields that are in the module.