Maison  >  Article  >  développement back-end  >  Drupal : Supprimer un plugin fantôme de la base de données

Drupal : Supprimer un plugin fantôme de la base de données

WBOY
WBOYoriginal
2024-07-16 13:27:57303parcourir

Drupal: Rimuovere un plugin fantasma dal database

Source : https://drupal.stackexchange.com/questions/315921/removing-phantom-plugin-from-database/320215#320215

Il peut arriver que lorsque vous désinstallez un module la procédure ne soit pas entièrement effectuée ou qu'aucune procédure de suppression ne soit présente, pour cette raison la base de données reste "sale".
Normalement, l'erreur provoquée par la suppression forcée d'un plugin est la suivante :

[error]  Drupal\Component\Plugin\Exception\PluginNotFoundException:
         The "name-of-plugin" entity type does not exist.
         in Drupal\Core\Entity\EntityTypeManager->getDefinition()

Activer la configuration qui affiche tous les messages d'erreur peut vous aider à comprendre où l'erreur est présente et où des mesures doivent être prises.
Vous pouvez activer l'activation complète des journaux sur la page admin/config/development/logging ici. Cette configuration peut vous aider à déterminer si le problème vient de la configuration ou si le nom du plugin est codé en dur dans votre code.

Nous allons maintenant aborder comment résoudre le problème s'il est lié aux configurations et pour ce faire, nous avons deux manières possibles :

  • Exporter l'intégralité de la configuration et la réimporter après avoir supprimé les références du plugin
  • En agissant directement sur les configurations présentes dans la db et en supprimant le plugin

Exporter toute la configuration et la réimporter

Cette solution est probablement parmi les plus utilisées si vous suivez la méthodologie de publication standard recommandée par la communauté Drupal.
Exportez l'intégralité de la configuration via l'interface graphique ou avec la commande drush config:export. Dans les fichiers récupérés de l'export, effectuez une recherche en texte intégral avec le nom du plugin. Supprimez la section de configuration à l'origine de l'erreur et importez la configuration avec drush config:import

En agissant directement sur les configurations présentes dans la db et en supprimant le plugin

Cette solution est utile pour ceux qui, comme moi, n'ont pas la possibilité d'exporter toute la configuration et de la réimporter mais ont besoin de travailler "à chaud" sur le site.
Pour trouver quelles configurations sont à l'origine de l'erreur, vous pouvez exécuter cette requête sur la base de données :

SELECT name FROM config WHERE data LIKE "%name-of-plugin%";

La requête recherche dans la table de configuration le plugin incriminé et renvoie les noms des configurations qui appellent le plugin.

Lorsque vous avez les noms des configurations, vous pouvez procéder à la suppression du plugin.
En fonction du plugin et de la configuration en erreur, la méthode de suppression peut légèrement changer, prenons maintenant en considération un exemple qui peut aussi être un bon point de départ pour d'autres cas.

Ex.
J'ai eu un problème avec le plugin filter_image_lazy_load dû à une mauvaise mise à jour Drupal 10.
La requête précédente a renvoyé ces configurations :

filter.format.basic_html
filter.format.full_html
filter.format.restricted_html

Avec le service config.factory, j'ai chargé les configurations et vérifié où le problème existe. Ensuite, vous pouvez procéder à la suppression du plugin comme ceci :

$configName = 'filter.format.basic_html';
$config = \Drupal::service('config.factory')->getEditable($configName);
$filters = $config->get('filters');
unset($filters['filter_image_lazy_load']);
$config->set('filters', $filters)->save()

Vous pouvez faire exactement la même chose avec drush config:get filter.format.basic_html et drush config:set filter.format.basic_html ou d'un seul coup avec drush config:edit filter.format.basic_html

Après avoir nettoyé les configurations, exécutez un drush cache:rebuild et l'erreur devrait être résolue !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn