-
-
Notifications
You must be signed in to change notification settings - Fork 784
Closed
Labels
Description
I'm currently trying to migrate a 12.0 database to 13.0 and the openupgrade --update=all step is done.
Now, I'm applying official odoo update and I'm falling on this error:
ERROR mig_9008 odoo.sql_db: bad query: DELETE FROM ir_model WHERE id IN (xxx)
ERROR: update or delete on table "ir_model" violates foreign key constraint "ir_model_relation_model_fkey" on table "ir_model_relation"
DETAIL: Key (id)=(xxx) is still referenced from table "ir_model_relation".
Looking at the openupgrade fork, I can see that IrModelFields._drop_column override default behaviour in order to keep the SQL column.
Following is an extract of the openupgrade log
INFO mig_9008 odoo.addons.base.models.ir_model: Deleting 17054@ir.model.fields (hr_holidays.field_hr_holidays_summary_dept____last_update)
WARNING mig_9008 OpenUpgrade: Module Unknown: Not dropping the column of field __last_update of model hr.holidays.summary.dept
INFO mig_9008 odoo.models.unlink: User #1 deleted ir.model.data records with IDs: [2195364]
INFO mig_9008 odoo.models.unlink: User #1 deleted ir.model.fields records with IDs: [17054]
INFO mig_9008 odoo.addons.base.models.ir_model: Deleting 17053@ir.model.fields (hr_holidays.field_hr_holidays_summary_dept__write_date)
INFO mig_9008 odoo.models.unlink: User #1 deleted ir.model.data records with IDs: [2195363]
INFO mig_9008 odoo.models.unlink: User #1 deleted ir.model.fields records with IDs: [17053]
INFO mig_9008 odoo.addons.base.models.ir_model: Deleting 17052@ir.model.fields (hr_holidays.field_hr_holidays_summary_dept__write_uid)
INFO mig_9008 odoo.models.unlink: User #1 deleted ir.model.data records with IDs: [2195362]
INFO mig_9008 odoo.models.unlink: User #1 deleted ir.model.fields records with IDs: [17052]
INFO mig_9008 odoo.addons.base.models.ir_model: Deleting 17051@ir.model.fields (hr_holidays.field_hr_holidays_summary_dept__create_date)
INFO mig_9008 odoo.models.unlink: User #1 deleted ir.model.data records with IDs: [2195361]
INFO mig_9008 odoo.models.unlink: User #1 deleted ir.model.fields records with IDs: [17051]
INFO mig_9008 odoo.addons.base.models.ir_model: Deleting 17050@ir.model.fields (hr_holidays.field_hr_holidays_summary_dept__create_uid)
INFO mig_9008 odoo.models.unlink: User #1 deleted ir.model.data records with IDs: [2195360]
INFO mig_9008 odoo.models.unlink: User #1 deleted ir.model.fields records with IDs: [17050]
INFO mig_9008 odoo.addons.base.models.ir_model: Deleting 17049@ir.model.fields (hr_holidays.field_hr_holidays_summary_dept__display_name)
WARNING mig_9008 OpenUpgrade: Module Unknown: Not dropping the column of field display_name of model hr.holidays.summary.dept
INFO mig_9008 odoo.models.unlink: User #1 deleted ir.model.data records with IDs: [2195359]
INFO mig_9008 odoo.models.unlink: User #1 deleted ir.model.fields records with IDs: [17049]
INFO mig_9008 odoo.addons.base.models.ir_model: Deleting 17048@ir.model.fields (hr_holidays.field_hr_holidays_summary_dept__id)
INFO mig_9008 odoo.models.unlink: User #1 deleted ir.model.data records with IDs: [2195358]
INFO mig_9008 odoo.models.unlink: User #1 deleted ir.model.fields records with IDs: [17048]
INFO mig_9008 odoo.addons.base.models.ir_model: Deleting 17047@ir.model.fields (hr_holidays.field_hr_holidays_summary_dept__holiday_type)
WARNING mig_9008 OpenUpgrade: Module Unknown: Not dropping the column of field holiday_type of model hr.holidays.summary.dept
INFO mig_9008 odoo.models.unlink: User #1 deleted ir.model.data records with IDs: [2195357]
INFO mig_9008 odoo.models.unlink: User #1 deleted ir.model.fields records with IDs: [17047]
INFO mig_9008 odoo.addons.base.models.ir_model: Deleting 17046@ir.model.fields (hr_holidays.field_hr_holidays_summary_dept__depts)
WARNING mig_9008 OpenUpgrade: Module Unknown: Not dropping the column of field depts of model hr.holidays.summary.dept
INFO mig_9008 odoo.models.unlink: User #1 deleted ir.model.data records with IDs: [2195356]
INFO mig_9008 odoo.models.unlink: User #1 deleted ir.model.fields records with IDs: [17046]
INFO mig_9008 odoo.addons.base.models.ir_model: Deleting 17045@ir.model.fields (hr_holidays.field_hr_holidays_summary_dept__date_from)
WARNING mig_9008 OpenUpgrade: Module Unknown: Not dropping the column of field date_from of model hr.holidays.summary.dept
INFO mig_9008 odoo.models.unlink: User #1 deleted ir.model.data records with IDs: [2195355]
INFO mig_9008 odoo.models.unlink: User #1 deleted ir.model.fields records with IDs: [17045]
INFO mig_9008 odoo.addons.base.models.ir_model: Deleting 978@ir.model (hr_holidays.model_hr_holidays_summary_dept)
ERROR mig_9008 odoo.sql_db: bad query: DELETE FROM ir_model WHERE id IN (978)
ERROR: update or delete on table "ir_model" violates foreign key constraint "ir_model_relation_model_fkey" on table "ir_model_relation"
DETAIL: Key (id)=(978) is still referenced from table "ir_model_relation".
So, all fields definition and their relative XML-ID are deleted (even the m2m field_hr_holidays_summary_dept__depts) but many2many tables are kept intact.
From my understanding, this error should happen each time a model with a many2many field is deleted while updated with openupgrade.
What is the proper way to deal with this:
- Write a
pre-migration.pyand addDELETE FROM ir_model_relation ...? - Hack the openupgrade's
_drop_columncode to automatically delete the table relation stored inir_model_relationwhen the field is deleted (without dropping the many2many table) ?