¿Cómo eliminar manualmente o mediante programación un campo?

8

Intenté crear un campo, pero mi servidor se cayó a la mitad con un error interno del servidor debido a un ataque de spambot ...

Ahora, cuando intento agregar el campo nuevamente, obtengo:

El nombre legible por máquina ya está en uso. Debe ser único.

Supongo que algunas tablas estaban pobladas en la base de datos. ¿Cómo puedo eliminarlos fácilmente?

giorgio79
fuente
Echa un vistazo a mi respuesta en drupal.stackexchange.com/questions/46085/…
amateur barista

Respuestas:

27

También puedes usar drush para correr field_delete_field(). Solo corre:

drush eval 'field_delete_field("yourfield")'
Jance
fuente
1
Buena decisión, mucho más limpia que cazar a través de la base de datos. Ejecute cron después también o field_purge_batch ().
littledynamo
2
¡Esto es excelente! Para su información, esa función no elimina completamente los datos. Agrega una tabla db para cada campo cuyo nombre comienza "field_deleted_data_". Probablemente sea algo bueno. Pero la gente puede querer terminar el trabajo dejando caer esas tablas.
Shai
1
Los datos de los campos eliminados se purgan durante las ejecuciones cron. No descarte esas tablas, ya que podría WSOD su sitio drupal.
aaronbauman
4

Wow, crear un campo toma como 2 segundos ... pero si se arruinó, supongo que se arruinó.

Dado que no sabes "dónde" se arruinó, básicamente tendrás que buscar las mesas para asegurarte de limpiar todo lo que HAY allí ...

  • Droplas mesas field_data_FIELD_THE_NAME_YOU_GAVE_ITy field_revision_FIELD_THE_NAME_YOU_GAVE_IT.

  • También ingrese field_configy field_config_instancebusque nameclaves (y las bundleclaves) para el campo + paquetes a los que ató el campo con nombre. Eliminar esas entradas en esas 2 tablas también.

  • Borra el caché de tu sitio.

Tenken
fuente
1
Por favor no hagas esto. Vea la respuesta a continuación: field_delete_field () que invocará cualquier enlace relevante y también limpiará la memoria caché. En general, si está escribiendo SQL u operando directamente en la base de datos, está haciendo algo mal.
aaronbauman
1
Si la adición de campos falla en la IU. ¿Por qué asumirías que la API seguirá funcionando para eliminar datos / tablas mal formados? Estoy de acuerdo con su respuesta general, no estoy de acuerdo con ella en el 100% de todos los casos.
Tenken
Tienes razón: no leí a fondo la pregunta original. ¡Culpa mía! El método preferido es usar field_delete_field (), pero si falla, ir directamente a la base de datos es probablemente la mejor / única alternativa.
aaronbauman