Відновити видалене поле


11

У мене є тип вмісту з 4-ма полями, кожне з яких є посиланням на термін. Є 100 вузлів, яким кожен присвоює 4 посилання на термін. Я випадково видалив одне з цих полів з адміністратора> структура> типи вмісту> тип контенту ... в результаті чого всі 100 вузлів втратили посилання на термін, яке містило це втрачене поле.

Після встановлення модуля адміністратора бази даних я побачив, що база даних для мого видаленого поля все ще присутня, вона була перейменована на щось на зразок "field_deleted_field_74"

  1. Використовуючи mysql, я зміг перейменувати цю базу даних на "field_data_field_originalname" - тобто використовуючи оригінальну назву машини для видаленого поля
  2. Крім того, я зміг переключити значення видаленого стовпця всередині цієї бази даних з "1" на "0".

Я зробив вищезазначене з іншою базою даних "привид", яку я виявив, що називається чимось на зразок "field_revision_field_74" ...

Моя проблема зараз полягає в тому, що моє перейменоване поле не відображається як попереднє поле на екрані моїх полів керування типів вмісту, ані в адміністраторі> звіти> список полів. Коли я запускаю "drush field-info polja", він також відсутній.

Як повернути його назад? Я припускаю, що є ще одна база даних, яка посилається на неї, яку мені потрібно редагувати.

Дякую!


Чи є у вас резервні копії всієї бази даних перед видаленням полів?
Оллі

На жаль ні. Я все ж вирішив проблему.
iain maitland

Відповіді:


14

Хороше запитання, і дивно, що немає простішого способу повернути видалене поле, враховуючи, що дані все ще є

Припустимо, що у вас є:

  1. Перейменовано таблиці field_deleted_ * назад у field_data_field_myfield та field_revision_field_myfield (останнє також важливо)
  2. Оновлено прапор "видалено" з 1 до 0 у відповідних таблицях даних.

Є також

  • field_config

Основна конфігурація поля

  • field_config_instance

Конфігурація поля на певному пакеті сутності.

Можливо, вам доведеться також відрегулювати прапор 'видалено':

наприклад:

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;

2
Дякую за швидку відповідь. Редагування баз даних field_config та field_config_instance зробило свою справу.
iain maitland
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.