I just wanted to make sure that upgrading the `base` or `account` module everything works fine, because if I pull new changes to the module I want to upgrade the database in a future.
I have created new records manually on the model `account.acount.type`. But when I try to upgrade the `account` module, the exception written at the bottom of this question is raised. Odoo is trying to remove records from that model. Why is this happening?
I have installed the account module, but I did not removed any record from that table, I've only added a few more types. So the [expected behaviour of upgrading modules with data is](https://www.odoo.com/forum/help-1/question/what-does-noupdate-mean-in-the-following-xml-statement-data-noupdate-1-88009):
> noupdate means when second time this module will upgraded, this record will not be updated again. The record which is inside noupdate="1" will be initialized only at installation time.
>
> Tip: In case if you delete the record then at next update system will Re-create it. Usually those kind of records which are having possibility of modification from front end, given inside noupdate=1. For example, automatic scheduler records.
<data noupdate="1">
<!-- account.account.type -->
<record model="account.account.type" id="data_account_type_receivable">
<field name="name">Receivable</field>
<field name="type">receivable</field>
<field name="include_initial_balance" eval="True"/>
</record>
<!-- [...] -->
This is the raised error on the log while upgrading the account module
2018-12-11 20:35:31,729 18018 INFO db_name odoo.addons.base.ir.ir_model: Deleting 59@account.account.type (l10n_es.account_type_third_parties)
2018-12-11 20:35:31,760 18018 ERROR db_name odoo.sql_db: bad query: b'DELETE FROM account_account_type WHERE id IN (59)'
ERROR: null value in column "user_type_id" violates not-null constraint
DETAIL: Failing row contains (14927, Account name or description, null, 4, f, null, other, null, f, null, 1, null, 1, 2018-12-11 18:10:24.091826, 1, 2018-12-11 18:10:24.091826, t).
CONTEXT: SQL statement "UPDATE ONLY "public"."account_account" SET "user_type_id" = NULL WHERE $1 OPERATOR(pg_catalog.=) "user_type_id""
2018-12-11 20:35:31,763 18018 WARNING db_name odoo.modules.loading: Transient module states were reset
2018-12-11 20:35:31,763 18018 ERROR db_name odoo.modules.registry: Failed to load registry
Traceback (most recent call last):
File "/path/to/odoo/src/modules/registry.py", line 85, in new
odoo.modules.load_modules(registry._db, force_demo, status, update_module)
File "/path/to/odoo/src/modules/loading.py", line 414, in load_modules
env['ir.model.data']._process_end(processed_modules)
File "/path/to/odoo/src/linked/base/ir/ir_model.py", line 1628, in _process_end
record.unlink()
File "/path/to/odoo/src/models.py", line 2935, in unlink
cr.execute(query, (sub_ids,))
File "/path/to/odoo/src/sql_db.py", line 155, in wrapper
return f(self, *args, **kwargs)
File "/path/to/odoo/src/sql_db.py", line 232, in execute
res = self._obj.execute(query, params)
psycopg2.IntegrityError: null value in column "user_type_id" violates not-null constraint
This is raised because the account type is being used by some account.
Questions
So the only solution is to use the already existing account types instead of creating new ones?
Is there a place in the source code where this unlinking action is made? Does anyone know?
Is this the normal behaviour?
Note: I have imported the chart of accounts manually from scratch