Я просто хотел убедиться, что при обновлении модуля base
или account
все работает нормально, потому что, если я внесу новые изменения в модуль, я хочу обновить базу данных в будущем.
Iсоздали новые записи вручную на модели account.acount.type
.Но когда я пытаюсь обновить модуль account
, возникает исключение, написанное внизу этого вопроса.Odoo пытается удалить записи из этой модели.Почему это происходит?
Я установил модуль учетной записи, но я не удалил ни одной записи из этой таблицы, я только добавил еще несколько типов.Таким образом, ожидаемое поведение при обновлении модулей с данными : :
noupdate означает, что при втором обновлении этого модуля эта запись не будет обновляться снова.Запись, которая находится внутри noupdate = "1", будет инициализирована только во время установки.
Совет : Если вы удалите запись, то при следующем обновлении система создаст ее заново.Обычно такие записи, которые имеют возможность модификации из внешнего интерфейса, приведены внутри noupdate = 1.Например, автоматический планировщик записей.
<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>
<!-- [...] -->
Это повышенная ошибка в журнале при обновлении модуля учетной записи
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.
Вопросы
Так что единственноерешение состоит в том, чтобы использовать уже существующие типы учетных записей вместо создания новых?
Есть ли место в исходном коде, где выполняется это действие отмены связи?Кто-нибудь знает?
Это нормальное поведение?
Примечание : я импортировал план счетов вручнуюс нуля