Bug #42861
IntegrityError: duplicate key value violates unique constraint "a2_rbac_role_permissions_role_id_permission_id_98...
Statut:
Nouveau
Priorité:
Normal
Assigné à:
-
Catégorie:
-
Version cible:
-
Début:
14 mai 2020
Echéance:
% réalisé:
0%
Temps estimé:
Patch proposed:
Non
Planning:
Non
Description
https://sentry.entrouvert.org/entrouvert/publik/issues/2268/
IntegrityError: duplicate key value violates unique constraint "a2_rbac_role_permissions_role_id_permission_id_98855640_uniq" DETAIL: Key (role_id, permission_id)=(541, 1) already exists. (20 additional frame(s) were not displayed) ... File "django/db/models/sql/compiler.py", line 1112, in execute_sql cursor.execute(sql, params) File "django/db/backends/utils.py", line 79, in execute return super(CursorDebugWrapper, self).execute(sql, params) File "django/db/backends/utils.py", line 64, in execute return self.cursor.execute(sql, params) File "django/db/utils.py", line 94, in __exit__ six.reraise(dj_exc_type, dj_exc_value, traceback) File "django/db/backends/utils.py", line 64, in execute return self.cursor.execute(sql, params) Internal Server Error: /manage/roles/99/
Historique
Mis à jour par Lauréline Guérin il y a presque 4 ans
- Projet changé de Suivi des traces à Authentic 2
Mis à jour par Benjamin Dauvergne il y a presque 4 ans
C'est https://code.djangoproject.com/ticket/19544 il y a une race condition quand on définit une relation M2M, c'est corrigé par ça (https://github.com/django/django/commit/28712d8acfffa9cdabb88cb610bae14913fa185d) mais c'est uniquement en Django 3.0 :/
En attendant il va falloir boucler sur les IntegrityError, on ne peut pas faire mieux (ou alors se taper des delete puis .get_or_create() à la main) :
while True: if set(admin_role.permissions.all()) != permissions: try: admin_role.permissions = permissions break except IntegrityError: continue