it-swarm.com.de

"Felder bis zum Löschen ausstehend" Modul wird deinstalliert - wie manuell löschen?

Beim Versuch, das Modul "Dynamic Entity Reference" zu deinstallieren, wird der Fehler "Felder ausstehend löschen" angezeigt. Ich kann das Modul auch nicht deaktivieren, da das Häkchen ausgegraut ist (es sei denn, ich vermisse, wie Module in Drupal 8) deaktiviert werden.

Ich habe cron ausgeführt und die Caches viele, viele Male geleert und/admin/reports/fields überprüft, aber es werden dort keine Felder erwähnt, die dieses Modul verwenden.

Ich habe Vorschläge für Drupal 7 gefunden, die besagen, die Felder aus der Datenbanktabelle field_config Zu löschen, aber diese Tabelle existiert nicht in Drupal 8). Gibt es eine Möglichkeit, diese Zombiefelder loszuwerden? Sie müssen irgendwo aufbewahrt werden!

Bitte sag mir nicht, ich soll Drush benutzen, ich wünschte ich könnte, glaub mir, aber ich habe keinen Shell-Zugang, nur sftp und phpmyadmin.

3
naomi

Es stellt sich heraus, dass gelöschte Felder in Drupal 8) in der Tabelle key_value Gespeichert sind.

Um sie zu finden:

select * from key_value where name = "field.field.deleted" or name = "field.storage.deleted"

Die Werte werden als Blob gespeichert, können jedoch angezeigt werden (z. B. in phpmyadmin können Sie darauf klicken, um sie herunterzuladen und in vim oder ähnlichem anzuzeigen). Der Wert macht für einen Menschen nicht viel Sinn, aber nachdem ich das Codedrucken und die Fehlerprotokollierung verschiedener Dinge durchlaufen hatte, war mir klar, dass diese Einträge die Deinstallation aufhielten. Ich habe die Tabelle gesichert, die Einträge gelöscht und konnte dann das Modul deinstallieren.

Der gleiche Vorschlag wird hier als Antwort auf ein verwandtes Problem gemacht:

https://drupal.stackexchange.com/a/230199/25792

6
naomi

Die Felder werden durch Cron-Läufe gelöscht. Aber nur eine feste Losgröße. Sie können einen höheren Wert konfigurieren. Wenn Sie drush nicht verwenden können, können Sie dies in der Benutzeroberfläche tun. Gehen Sie zur Seite /admin/config/development/configuration/single/import und fügen Sie field.settings eine höhere Losgröße:

purge_batch_size: 1000

und wieder cron laufen lassen.

(enter image description here

3
4k4

Ich habe das gleiche Problem mit einem Feld festgestellt, das in mehr als 7000 Entitäten verwendet wurde, während purge_batch_size: 1000 nicht funktioniert. Erhöhen Sie die Anzahl auf über 7000 Werke.

Damit

purge_batch_size: 10000

funktioniert für meine Instanz.

Ich habe dieses Problem gelöst, indem ich den folgenden Befehl ausgeführt habe:

drush php-eval 'field_purge_batch(10000);'

beyogen auf

https://drupal.stackexchange.com/a/261669/9046

dann renne

drush cron

dann kann ich das Modul deinstallieren, das verhindert wurde.

3
sealionking

Am Ende musste ich die Tabelle field_collection_item leeren, um das Modul field_collection auf meinem System zu deinstallieren. Falls noch jemand Probleme hat, nachdem er die anderen Vorschläge hier ausprobiert hat.

0
ryrye