Récupérer un champ supprimé

11

J'ai un type de contenu avec 4 champs dont chacun est une référence de terme. Il y a 100 nœuds affectés chacun à 4 références de terme. J'ai accidentellement supprimé l'un de ces champs dans admin> structure> content-types> mycontent-type ... entraînant la perte de la référence de terme contenue dans ce champ perdu par les 100 nœuds.

Après avoir installé le module d' administration de la base de données, j'ai pu voir que la base de données de mon champ supprimé était toujours présente, elle avait été renommée quelque chose comme "field_deleted_field_74"

  1. En utilisant mysql, j'ai pu renommer cette base de données en "field_data_field_originalname" - c'est-à-dire en utilisant le nom d'origine de la machine pour le champ supprimé
  2. De plus, j'ai pu changer la valeur de la colonne supprimée dans cette base de données de '1' à '0'.

J'ai fait ce qui précède avec l'autre base de données "fantôme" que j'ai trouvée qui s'appelait quelque chose comme "field_revision_field_74" ...

Mon problème est maintenant que mon champ renommé n'apparaît pas comme un champ préexistant sur mon affichage de champs de gestion de type de contenu ni dans admin> rapports> liste de champs. Lorsque j'exécute «drush field-info fields», il est également manquant.

Comment le ramener? Je suppose qu'il existe une autre base de données qui s'y réfère que je dois modifier.

Merci!

Iain Maitland
la source
Avez-vous des sauvegardes de toute la base de données avant de supprimer les champs?
Ollie
Malheureusement non. J'ai cependant résolu le problème.
iain maitland

Réponses:

14

Une bonne question, et surprenant, il n'y a pas de moyen plus simple de restaurer un champ supprimé, étant donné que les données sont toujours disponibles.

En supposant que vous ayez:

  1. Renommé les tables field_deleted_ * en field_data_field_myfield et field_revision_field_myfield (ce dernier est également important)
  2. Mise à jour de l'indicateur «supprimé» de 1 à 0 dans les tableaux de données pertinents.

Il y a aussi

  • field_config

La configuration du champ principal

  • field_config_instance

La configuration de champ sur un ensemble d'entités particulier.

Vous devrez peut-être également y ajuster le drapeau «supprimé»:

par exemple:

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
la source
2
Merci pour votre réponse rapide. La modification des bases de données field_config et field_config_instance a fait l'affaire.
iain maitland