削除されたフィールドを復元する


11

それぞれが用語参照である4つのフィールドを持つコンテンツタイプがあります。100個のノードがあり、それぞれに4つの用語参照が割り当てられています。私は誤ってこれらのフィールドの1つをadmin> structure> content-types> mycontent-type ...から削除しました。その結果、100個のノードすべてが、この失われたフィールドに含まれる用語参照を失っています。

データベース管理モジュールをインストールした後、削除したフィールドのデータベースがまだ存在していることがわかりました。「field_deleted_field_74」のような名前に変更されていました。

  1. mysqlを使用して、このデータベースの名前を「field_data_field_originalname」に戻すことができました。つまり、削除されたフィールドに元のマシン名を使用しています
  2. さらに、このデータベース内の削除された列の値を「1」から「0」に切り替えることができました。

私は、「field_revision_field_74」のような名前が付けられていることがわかった他の「ゴースト」データベースで上記を実行しました...

名前を変更したフィールドが、コンテンツタイプの管理フィールドの表示や、admin> reports> fieldsリストに既存のフィールドとして表示されないのが私の問題です。「drush field-info fields」を実行すると、それも欠落しています。

元に戻す方法は?編集が必要なデータベースを参照している別のデータベースがあると想定しています。

ありがとう!


フィールドを削除する前に、データベース全体のバックアップがありますか?
Ollie

残念ながら違います。しかし、私は問題を解決しました。
iain maitland 2014年

回答:


14

良い質問です。データがまだ利用可能であることを考えると、削除されたフィールドをロールバックする簡単な方法がないのは驚くべきことです。

あなたが持っていると仮定します:

  1. field_deleted_ *テーブルの名前をfield_data_field_myfieldとfield_revision_field_myfieldに戻しました(後半も重要です)
  2. 関連データテーブルの「削除済み」フラグを1から0に更新しました。

もあります

  • field_config

主なフィールド構成

  • field_config_instance

特定のエンティティバンドルのフィールド構成。

そこでも 'deleted'フラグを調整する必要があるかもしれません:

例えば:

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 2014年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.