Stellen Sie ein gelöschtes Feld wieder her

11

Ich habe einen Inhaltstyp mit 4 Feldern, von denen jedes eine Begriffsreferenz ist. Es sind 100 Knoten mit jeweils 4 Termreferenzen zugeordnet. Ich habe versehentlich eines dieser Felder aus admin> Struktur> Inhaltstypen> Mycontent-Typ ... gelöscht, was dazu führte, dass alle 100 Knoten den Begriff Referenz verloren, den dieses verlorene Feld enthielt.

Nach der Installation des Datenbankadministrationsmoduls konnte ich feststellen, dass die Datenbank für mein gelöschtes Feld noch vorhanden war. Sie wurde in "field_deleted_field_74" umbenannt.

  1. Mit mysql konnte ich diese Datenbank wieder in "field_data_field_originalname" umbenennen - dh mit dem ursprünglichen Computernamen für das gelöschte Feld
  2. Außerdem konnte ich den Wert der gelöschten Spalte in dieser Datenbank von '1' auf '0' ändern.

Ich habe das oben genannte mit der anderen 'Geister'-Datenbank gemacht, die ich gefunden habe und die so etwas wie "field_revision_field_74" heißt ...

Mein Problem ist jetzt, dass mein umbenanntes Feld weder als bereits vorhandenes Feld in der Anzeige meiner Felder zum Verwalten von Inhaltstypen noch in der Liste admin> Berichte> Felder angezeigt wird. Wenn ich 'drush field-info fields' ausführe, fehlt es auch.

Wie bringe ich es zurück? Ich gehe davon aus, dass es eine andere Datenbank gibt, die darauf verweist und die ich bearbeiten muss.

Vielen Dank!

iain maitland
quelle
Haben Sie Backups der gesamten Datenbank, bevor Sie die Felder gelöscht haben?
Ollie
Leider nicht. Ich habe das Problem jedoch gelöst.
Iain Maitland

Antworten:

14

Eine gute Frage, und überraschenderweise gibt es keinen einfacheren Weg, ein gelöschtes Feld zurückzusetzen, da die Daten noch verfügbar sind.

Vorausgesetzt, Sie haben:

  1. Die Tabellen field_deleted_ * wurden wieder in field_data_field_myfield und field_revision_field_myfield umbenannt (letzteres ebenfalls wichtig).
  2. Das Flag 'Gelöscht' wurde in den entsprechenden Datentabellen von 1 auf 0 aktualisiert.

Es gibt auch

  • field_config

Die Hauptfeldkonfiguration

  • field_config_instance

Die Feldkonfiguration für ein bestimmtes Entitätspaket.

Möglicherweise müssen Sie dort auch das Flag "Gelöscht" anpassen:

z.B:

UPDATE field_config SET deleted = 0 where field_name = 'field_my_deleted_field';
UPDATE field_config_instance SET deleted = 0 where field_name = 'field_my_deleted_field';
TRUNCATE TABLE cache_field;
David Thomas
quelle
2
Danke, für die schnelle Antwort. Das Bearbeiten der Datenbanken field_config und field_config_instance hat den Trick getan.
Iain Maitland