web-dev-qa-db-fra.com

Exécution de l'entité drush: les mises à jour ont été déclarées réussies mais ne changent rien

Je travaille sur un projet avec un type d'entité personnalisé. Mon module fonctionne bien dans mon environnement local. Mais quand je me suis déployé sur mon site de transit, les choses sont étranges.

Par exemple, j'ai essayé de changer ma définition d'entité, puis d'exécuter la commande drush:

drush entity:updates -y

La commande m'a donné une réponse positive:

The following updates are pending:

dharmasun_payment entity type : 
The Field 1 field needs to be installed.
The Field 2 field needs to be installed.

 // Do you wish to run all pending updates?: yes.

 Finished performing updates

Sauf que la base de données n'a pas été modifiée du tout. Ainsi, lorsque je réexécute la commande, cela me donne exactement la même sortie.

Le site intermédiaire peut avoir un module différent installé que mon environnement de développement. Mais je ne peux pas faire de changement de rupture sur la plateforme de mise en scène (ou mes collègues de travail seraient fous).

Mes questions:

  1. Comment commencer à déboguer cela? Existe-t-il de toute façon que je peux obtenir de meilleurs messages de journal avec le drush entity:update commande?
  2. Ou existe-t-il un autre moyen de mettre à jour la définition d'entité et d'apporter des modifications à la base de données?

Merci.

1
Koala Yeung

Pour déployer des mises à jour de schéma d'entité, utilisez un hook de mise à jour et le gestionnaire de mise à jour de définition d'entité . Voir Note de publication de Drupal 8.7. et l'enregistrement des modifications La prise en charge des mises à jour automatiques des entités a été supprimée .

drush entup passe du noyau au contrib: https://www.drupal.org/project/devel_entity_updates

Ce projet vise à restaurer cette fonctionnalité en tant qu'outil réservé aux développeurs. Ce module dépend de Devel et n'est pas censé être activé dans les environnements de production ou utilisé dans les workflows de déploiement.


"Ou existe-t-il un autre moyen de mettre à jour la définition d'entité et d'apporter des modifications à la base de données?"

Oui il y a. N'utilisez pas de champs de base autres que pour les choses très basiques qui ne changent jamais (si le noyau rend les modifications nécessaires, vous trouverez probablement des exemples sur la façon d'écrire le crochet de mise à jour). Utilisez plutôt des champs configurables (champs de regroupement) afin de pouvoir déployer facilement la configuration.

5
4k4