Wie hier berichtet, habe ich große Probleme mit großen Vokabeln in Drupal 7. Jetzt möchte ich die großen Vokabulare leeren, aber ich kann das nicht über die Admin-Oberfläche tun, da der Speicher knapp wird und es daher nicht geladen werden kann Mehr.
Wie kann ich mit drush
MySQL alle Begriffe eines Vokabulars aus der Befehlszeile löschen ?
Ich weiß, ich könnte so etwas tun:
DELETE FROM `database`.`taxonomy_term_data` WHERE `taxonomy_term_data`.`vid` = 17
Aber was müsste ich sonst noch löschen?
7
taxonomy-terms
drush
database
user5950
quelle
quelle
Antworten:
Ungetestet; Verwendung für Inspiration und Test:
Fügen Sie dies in eine eigene Datei ein und führen Sie es als aus
Führen Sie es weiter aus, bis nichts mehr als gelöscht angezeigt wird. Das
array_slice
ist da, um die Dinge einzuschränken, damit Ihnen nicht der Speicher ausgeht. Sie können möglicherweise Speicherplatz sparen, indem Sie direkt abfragen. Dies ist jedochtaxonomy_get_tree()
nicht besonders ineffizient, solange Sie keine vollständigen Ladevorgänge ausführen.Sichern Sie Ihre Datenbank
drush sql-dump
vorsichtshalber, bevor Sie so etwas tun.quelle
Ich habe diese Module: Drush und Devel Verwenden Sie den Befehl generate-Terms, um alle Begriffe der Taxonomie auszuschließen:
Ändern Sie Ihren Wortschatznamen in den Namen des Wortschatzes, für den Sie Begriffe löschen möchten
quelle
Sie können den folgenden Befehl verwenden:
Wobei 123 Ihre Vokabular-ID ist, die Sie ändern sollten.
Wenn es nicht funktioniert, stellen Sie sicher, dass Sie Ihren Cache leeren (z. B. zwischengespeichert).
Sie können
vid
Ihren Wortschatznamen mit dem folgenden Befehl abrufen:Siehe auch:
quelle
Sie können auch das Modul https://www.drupal.org/project/taxonomy_multidelete_terms verwenden , um Taxonomiebegriffe zu löschen.
quelle
Neben @mpdonadio Code, habe ich nur noch das Snippet zu Last vid durch den Namen des Wortschatzes. Ich hoffe, es könnte jemandem helfen, Zeit zu sparen.
quelle
Sie können einen Drush-Befehl mit dem Namen erstellen
vocabulary-clean
. Erstellen Sie ein Modul mit dem Namendrush_taxonomy
, geben Sie in diedrush_taxonomy.drush.inc
Datei diesen Code ein:Installieren Sie das Modul, führen Sie es aus
drush cc drush
, um den Drush-Cache zu löschen, und verwenden Sie den folgenden Befehl:oder
Wenn Sie dem Befehl einen weiteren Alias hinzufügen möchten, fügen Sie dem Aliase-Array folgende Elemente hinzu:
Und Sie können diese Befehle verwenden:
Die Ausgabe wird immer sein:
quelle
Angenommen, die Entity-API ist installiert, können wir entity_delete_multiple verwenden, was schneller sein sollte, als jedes Mal eine zu löschen.
quelle
Heute ist dies auch mit der Drupal-Konsole einfach. Beispiel: Löschen Sie alle Begriffe des Vokabulars "Tags"
Drupal-Taxonomie: Begriff: Tags löschen
quelle