Projet

Général

Profil

Bug #42861

IntegrityError: duplicate key value violates unique constraint "a2_rbac_role_permissions_role_id_permission_id_98...

Ajouté par Sentry Io il y a presque 4 ans. Mis à jour il y a presque 4 ans.

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

#1

Mis à jour par Lauréline Guérin il y a presque 4 ans

  • Projet changé de Suivi des traces à Authentic 2
#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

Formats disponibles : Atom PDF