Recuperar um campo excluído

11

Eu tenho um tipo de conteúdo com 4 campos, cada um dos quais é uma referência de termo. Existem 100 nós cada um atribuído 4 referências de termo. Excluí acidentalmente um desses campos da administração> estrutura> tipos de conteúdo> tipo de conteúdo ... resultando em todos os 100 nós perdendo a referência a termo que esse campo perdido continha.

Depois de instalar o módulo Admin do banco de dados, pude ver que o banco de dados do meu campo excluído ainda estava presente, foi renomeado para algo como "field_deleted_field_74"

  1. Usando o mysql, pude renomear esse banco de dados de volta para "field_data_field_originalname" - ou seja, usando o nome original da máquina para o campo excluído
  2. Além disso, consegui mudar o valor da coluna excluída dentro deste banco de dados de '1' para '0'.

Eu fiz o acima com o outro banco de dados 'fantasma' que achei chamado algo como "field_revision_field_74" ...

Meu problema agora é que meu campo renomeado não aparece como um campo preexistente em meus campos de gerenciamento de tipo de conteúdo, nem na lista admin> reports> fields. Quando executo 'drush field-info fields', ele também está ausente.

Como trazê-lo de volta? Estou assumindo que existe outro banco de dados que se refere a ele que preciso editar.

Obrigado!

iain maitland
fonte
Você possui backups de todo o banco de dados antes de excluir os campos?
Ollie
Infelizmente não. No entanto, resolvi o problema.
Iain Maitland

Respostas:

14

Uma boa pergunta, e surpreendente, não há uma maneira mais fácil de reverter um campo excluído, pois os dados ainda estão disponíveis.

Supondo que você tenha:

  1. Renomeou as tabelas field_deleted_ * de volta para field_data_field_myfield e field_revision_field_myfield (este último também é importante)
  2. Atualizado o sinalizador 'excluído' de 1 para 0 nas tabelas de dados relevantes.

Há também

  • field_config

A principal configuração de campo

  • field_config_instance

A configuração do campo em um pacote configurável de entidade específico.

Pode ser necessário ajustar o sinalizador 'excluído' também:

por exemplo:

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
fonte
2
Obrigado pela resposta rápida. A edição dos bancos de dados field_config e field_config_instance fez o truque.
Iain Maitland