Heim  >  Artikel  >  Backend-Entwicklung  >  Drupal: Entfernen Sie ein Ghost-Plugin aus der Datenbank

Drupal: Entfernen Sie ein Ghost-Plugin aus der Datenbank

WBOY
WBOYOriginal
2024-07-16 13:27:57303Durchsuche

Drupal: Rimuovere un plugin fantasma dal database

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

Es kann vorkommen, dass bei der Deinstallation eines Moduls der Vorgang nicht vollständig durchgeführt wird oder kein Entfernungsvorgang vorhanden ist, weshalb die Datenbank „verschmutzt“ bleibt.
Normalerweise ist der durch das erzwungene Entfernen eines Plugins verursachte Fehler folgender:

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

Das Aktivieren der Konfiguration, die alle Fehlermeldungen anzeigt, kann Ihnen helfen zu verstehen, wo der Fehler vorliegt und wo Maßnahmen ergriffen werden müssen.
Sie können die vollständige Protokollaktivierung hier auf der Seite admin/config/development/logging aktivieren. Mithilfe dieser Konfiguration können Sie herausfinden, ob das Problem an Konfigurationen liegt oder ob der Plugin-Name in Ihrem Code fest codiert ist.

Jetzt werden wir uns mit der Lösung des Problems befassen, wenn es mit Konfigurationen zusammenhängt. Dazu haben wir zwei Möglichkeiten:

  • Exportieren der gesamten Konfiguration und erneutes Importieren nach Entfernen der Plugin-Referenzen
  • Indem Sie direkt auf die in der Datenbank vorhandenen Konfigurationen einwirken und das Plugin entfernen

Exportieren Sie die gesamte Konfiguration und importieren Sie sie erneut

Diese Lösung gehört höchstwahrscheinlich zu den am häufigsten verwendeten, wenn Sie der von der Drupal-Community empfohlenen Standard-Release-Methodik folgen.
Exportieren Sie die gesamte Konfiguration über die grafische Oberfläche oder mit dem Befehl drush config:export. Führen Sie in den aus dem Export wiederhergestellten Dateien eine Volltextsuche mit dem Plugin-Namen durch. Entfernen Sie den Konfigurationsabschnitt, der den Fehler verursacht, und importieren Sie die Konfiguration mit drush config:import

Indem Sie direkt auf die in der Datenbank vorhandenen Konfigurationen einwirken und das Plugin entfernen

Diese Lösung ist nützlich für diejenigen, die wie ich nicht die Möglichkeit haben, die gesamte Konfiguration zu exportieren und erneut zu importieren, sondern „heiß“ auf der Website arbeiten müssen.
Um herauszufinden, welche Konfigurationen den Fehler verursachen, können Sie diese Abfrage auf der Datenbank ausführen:

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

Die Abfrage durchsucht die Konfigurationstabelle nach dem problematischen Plugin und gibt die Namen der Konfigurationen zurück, die das Plugin aufrufen.

Wenn Sie die Namen der Konfigurationen haben, können Sie mit dem Entfernen des Plugins fortfahren.
Abhängig vom Plugin und der fehlerhaften Konfiguration kann sich die Entfernungsmethode geringfügig ändern. Betrachten wir nun ein Beispiel, das auch in anderen Fällen ein guter Ausgangspunkt sein kann.

Bsp.
Ich hatte ein Problem mit dem Plugin filter_image_lazy_load aufgrund eines fehlerhaften Drupal 10-Updates.
Die vorherige Abfrage hat diese Konfigurationen zurückgegeben:

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

Mit dem config.factory-Dienst habe ich die Konfigurationen geladen und überprüft, wo das Problem besteht. Dann können Sie das Plugin wie folgt entfernen:

$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()

Sie können genau das Gleiche mit drush config:get filter.format.basic_html und drush config:set filter.format.basic_html oder auf einmal mit drush config:edit filter.format.basic_html tun

Führen Sie nach dem Bereinigen der Konfigurationen einen Drush-Cache:Rebuild aus und der Fehler sollte behoben sein!

Das obige ist der detaillierte Inhalt vonDrupal: Entfernen Sie ein Ghost-Plugin aus der Datenbank. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn