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. Aus diesem Grund bleibt die Datenbank „verschmutzt“.
Normalerweise ist der Fehler, der durch das erzwungene Entfernen eines Plugins verursacht wird, dieser:
[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 verknüpft ist. 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 in 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.
Ex.
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. Anschließend 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 einen Schlag 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!
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3