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:
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
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!