web-dev-qa-db-fra.com

Paragraphes: erreur d'entité référencée lors de l'enregistrement

J'ai récemment mis à jour vers Drupal 8.6.2 et paragraphes 8.x-1.3.

J'ai un type de contenu avec un champ Paragraphes. Lorsque j'essaie de mettre à jour un nœud existant, j'obtiens le message d'erreur suivant:

The referenced entity (user: 21) does not exist.

  • Les paragraphes existants ne font pas directement référence aux utilisateurs.
  • L'utilisateur 21 n'existe pas.
  • L'utilisateur 21 n'est pas l'auteur du nœud.
  • Je ne peux mettre à jour le nœud que si supprimer tous des paragraphes, de tous types.
  • Aucune mise à jour de base de données ou mise à jour d'entité n'est en attente.

Mon sentiment est que quelque chose ne s'est pas mis à jour correctement, mais je ne sais pas comment vérifier/réexécuter les mises à jour. (Il y avait un certain nombre de mises à jour à exécuter lorsque j'ai déployé la mise à jour 8.6.2.)

MISE À JOUR: Je suis revenu à la version précédente et à l'état DB, et je toujours obtenez l'erreur (que personne n'a remarquée), donc elle n'est pas liée à la mise à jour.

MISE À JOUR 2: Ticket sur drupal.org

3
Tim

L'utilisateur 21 a été supprimé, mais 21 était toujours stocké comme valeur dans la colonne uid des tableaux de paragraphes. Changer l'uid en celui d'un utilisateur existant (23) a résolu le problème:

UPDATE paragraphs_item_field_data SET uid = 23 WHERE uid = 21;
UPDATE paragraphs_item_revision SET revision_uid = 23 WHERE revision_uid = 21;
UPDATE paragraphs_item_revision_field_data SET uid = 23 WHERE uid = 21;

Exécutez SQL, videz le cache, rechargez la page d'édition.

Remarque: d'autres tableaux contiennent également l'uid 21, mais sans effet indésirable (notable).

UPDATE file_managed SET uid = 23 where uid = 21;
UPDATE node_field_data SET uid = 23 where uid = 21;
UPDATE node_field_revision SET uid = 23 where uid = 21;
UPDATE node_revision SET revision_uid = 23 where revision_uid = 21;

Et deux de contrib:

UPDATE crop_revision SET revision_uid = 23 where revision_uid = 21;
UPDATE redirect SET uid = 23 where uid = 21;
1
Tim