Ripristina un campo eliminato


11

Ho un tipo di contenuto con 4 campi ognuno dei quali è un termine di riferimento. Vi sono 100 nodi a cui sono assegnati 4 termini di riferimento. Ho accidentalmente cancellato uno di questi campi da admin> struttura> tipi-contenuto> tipo -contento ... risultando in tutti i 100 nodi che perdevano il termine di riferimento contenuto in questo campo perso.

Dopo aver installato il modulo Amministratore database ho potuto vedere che il database per il mio campo eliminato era ancora presente, era stato rinominato in qualcosa come "field_deleted_field_74"

  1. Usando mysql sono stato in grado di rinominare questo database in "field_data_field_originalname" - cioè usando il nome della macchina originale per il campo eliminato
  2. Inoltre sono stato in grado di cambiare il valore della colonna eliminata all'interno di questo database da '1' a '0'.

Ho fatto quanto sopra con l'altro database 'fantasma' che ho scoperto che si chiamava qualcosa come "field_revision_field_74" ...

Il mio problema ora è che il mio campo rinominato non viene visualizzato come campo preesistente nella visualizzazione dei campi di gestione del tipo di contenuto né in admin> rapporti> elenco campi. Quando eseguo "Drush Field-Info Field" manca anche.

Come posso riportarlo? Suppongo che ci sia un altro database che fa riferimento ad esso che devo modificare.

Grazie!


Hai dei backup dell'intero database prima di aver eliminato i campi?
Ollie

Sfortunatamente no. Tuttavia ho risolto il problema.
Maitland, il

Risposte:


14

Una buona domanda e sorprendente non c'è un modo più semplice per eseguire il rollback di un campo eliminato, dato che i dati sono ancora disponibili.

Supponendo di avere:

  1. Rinominato le tabelle field_deleted_ * in field_data_field_myfield e field_revision_field_myfield (quest'ultimo anche importante)
  2. Aggiornato il flag "cancellato" da 1 a 0 nelle relative tabelle dei dati.

C'è anche

  • field_config

La configurazione del campo principale

  • field_config_instance

La configurazione del campo su un particolare bundle di entità.

Potrebbe essere necessario regolare il flag "eliminato" anche lì:

per esempio:

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;

2
Grazie per la pronta risposta. La modifica dei database field_config e field_config_instance ha funzionato.
Maitland, il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.