Bug #59767
IntegrityError: update or delete on table "auth_group" violates foreign key constraint "auth_user_groups_group_id...
Statut:
Nouveau
Priorité:
Normal
Assigné à:
-
Catégorie:
-
Version cible:
-
Début:
16 décembre 2021
Echéance:
% réalisé:
0%
Temps estimé:
Patch proposed:
Non
Planning:
Non
Description
https://sentry.entrouvert.org/entrouvert/publik/issues/54143/
IntegrityError: update or delete on table "auth_group" violates foreign key constraint "auth_user_groups_group_id_97559544_fk_auth_group_id" on table "auth_user_groups" DETAIL: Key (id)=(23682) is still referenced from table "auth_user_groups". File "django/db/backends/base/base.py", line 240, in _commit return self.connection.commit() IntegrityError: update or delete on table "auth_group" violates foreign key constraint "auth_user_groups_group_id_97559544_fk_auth_group_id" on table "auth_user_groups" DETAIL: Key (id)=(23682) is still referenced from table "auth_user_groups". (5 additional frame(s) were not displayed) ... File "django/db/transaction.py", line 240, in __exit__ connection.commit() File "django/db/backends/base/base.py", line 262, in commit self._commit() File "django/db/backends/base/base.py", line 240, in _commit return self.connection.commit() File "django/db/utils.py", line 89, in __exit__ raise dj_exc_value.with_traceback(traceback) from exc_value File "django/db/backends/base/base.py", line 240, in _commit return self.connection.commit() provisionning failed
Demandes liées
Historique
Mis à jour par Paul Marillonnet il y a plus de 2 ans
Étrange on dirait le comportement sur une ForeignKey(on_delete=models.DO_NOTHING)
. On n’a ça nulle part entre groupes et usagers django. Est-ce une modif dans django qui serait venue casser notre code ?
Mis à jour par Benjamin Dauvergne il y a plus de 2 ans
Il y a un souci de cascade sur la suppression d'un hobo.agent.common.models.Role (qui hérite de django.contrib.auth.models.Group) la suppression du User.groups.through ne se fait pas visiblement, c'est assez étrange. Je dirai dans un premier temps de faire un test tout con, on crée un common.Role on l'affecte à un utilisateur et on le supprime pour voir ce que ça donne.
Mais en plus il y a bug zarbi dans le code :
qs.delete() for role in qs: role.delete()
il y a une double suppression (mais j'aurai plutôt vu le souci sur la deuxième suppression).
Mis à jour par Benjamin Dauvergne il y a plus de 2 ans
- Lié à Development #59794: provisionning: ne pas supprimer les rôles deux fois lors d'un provisionning full ajouté