Recuperar un campo eliminado

11

Tengo un tipo de contenido con 4 campos, cada uno de los cuales es una referencia de término. Hay 100 nodos cada uno asignado a 4 referencias de término. Accidentalmente eliminé uno de estos campos de admin> estructura> tipos de contenido> mycontent-type ... resultando en que los 100 nodos pierdan el término de referencia que contenía este campo perdido.

Después de instalar el módulo de administración de la base de datos, pude ver que la base de datos para mi campo eliminado todavía estaba presente, se le cambió el nombre a algo como "field_deleted_field_74"

  1. Usando mysql, he podido cambiar el nombre de esta base de datos a "field_data_field_originalname", es decir, usando el nombre original de la máquina para el campo eliminado
  2. Además, he podido cambiar el valor de la columna eliminada dentro de esta base de datos de '1' a '0'.

He hecho lo anterior con la otra base de datos 'fantasma' que encontré que se llamaba algo así como "field_revision_field_74" ...

Mi problema ahora es que mi campo renombrado no aparece como un campo preexistente en mi visualización de campos de administración de tipo de contenido ni en admin> informes> lista de campos. Cuando ejecuto 'drush field-info fields' también falta.

¿Cómo lo traigo de vuelta? Supongo que hay otra base de datos que se refiere a ella que necesito editar.

¡Gracias!

iain maitland
fuente
¿Tiene alguna copia de seguridad de toda la base de datos antes de eliminar los campos?
Ollie
Lamentablemente no. Sin embargo resolví el problema.
iain maitland

Respuestas:

14

Una buena pregunta, y sorprendente, no hay una manera más fácil de deshacer un campo eliminado, dado que los datos aún están disponibles.

Asumiendo que tienes:

  1. Cambió el nombre de las tablas field_deleted_ * a field_data_field_myfield y field_revision_field_myfield (esta última también es importante)
  2. Se actualizó el indicador 'eliminado' de 1 a 0 en las tablas de datos relevantes.

También hay

  • field_config

La configuración del campo principal

  • field_config_instance

La configuración de campo en un paquete de entidad particular.

Es posible que también deba ajustar el indicador 'eliminado' allí:

p.ej:

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
fuente
2
Gracias por la rápida respuesta. La edición de las bases de datos field_config y field_config_instance hizo el truco.
iain maitland