Come eliminare manualmente o programmaticamente un campo?


8

Ho provato a creare un campo, ma il mio server è saltato a metà con un errore interno del server a causa di un attacco spambot ...

Ora, quando provo ad aggiungere di nuovo il campo, ricevo:

Il nome leggibile dalla macchina è già in uso. Deve essere unico.

Immagino che alcuni tavoli fossero popolati nel db. Come posso rimuoverli facilmente?


Risposte:


27

Puoi anche usare Drush per correre field_delete_field(). Corri:

drush eval 'field_delete_field("yourfield")'

1
Buona chiamata, molto più pulito della caccia attraverso il db. Esegui anche cron in seguito o field_purge_batch ().
littledynamo,

2
Questo è eccellente! Cordiali saluti, quella funzione non cancella completamente i dati. Aggiunge una tabella db per ogni campo il cui nome inizia "field_deleted_data_". Questa è probabilmente una buona cosa. Ma la gente potrebbe voler finire il lavoro lasciando cadere quei tavoli.
Shai,

1
I dati per i campi eliminati vengono eliminati durante le esecuzioni cron. Si prega di non eliminare quelle tabelle, in quanto potrebbe WSOD il tuo sito drupal.
aaronbauman,

4

Wow, la creazione di un campo richiede circa 2 secondi ... ma se è saltato fuori, immagino che sia saltato fuori.

Dal momento che non sai "dove" è saltato fuori fondamentalmente dovrai cercare i tavoli per essere sicuro di ripulire tutto ciò che è lì ...

  • Dropi tavoli field_data_FIELD_THE_NAME_YOU_GAVE_ITe field_revision_FIELD_THE_NAME_YOU_GAVE_IT.

  • Anche in field_confige field_config_instancelook per namele chiavi (e le bundlechiavi) per il campo + bundle si legò il campo chiamato a. Elimina anche quelle voci in quelle 2 tabelle.

  • Cancella la cache del sito.


1
Per favore non farlo. Vedi la risposta sotto: field_delete_field () che invocherà tutti gli hook rilevanti e pulirà anche la cache. In generale, se stai scrivendo SQL o operando direttamente nel database, stai facendo qualcosa di sbagliato.
aaronbauman,

1
Se l'aggiunta di campi non è riuscita nell'interfaccia utente. Perché dovresti supporre che l'API continuerà a funzionare per eliminare dati / tabelle non validi? Sono d'accordo con la tua risposta generale, non sono d'accordo con esso per il 100% di tutti i casi.
Tenken,

Hai ragione - non ho letto a fondo la domanda originale. Colpa mia! Il metodo preferito è usare field_delete_field (), ma se fallisce, andare direttamente al database è probabilmente la migliore / unica alternativa.
aaronbauman,
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.