フィールドを手動またはプログラムで削除する方法は?


8

フィールドを作成しようとしましたが、スパムボット攻撃によりサーバーが内部サーバーエラーで途中で停止しました...

ここで、フィールドをもう一度追加しようとすると、次のようになります。

機械可読名はすでに使用されています。それはユニークでなければなりません。

いくつかのテーブルがデータベースに入力されたと思います。これらを簡単に削除するにはどうすればよいですか?


回答:


27

drushを使用して実行することもできますfield_delete_field()。ただ走れ:

drush eval 'field_delete_field("yourfield")'

1
良い電話、データベースを探すよりもずっときれいです。その後もcronを実行するか、field_purge_batch()を実行します。
littledynamo 2014

2
これは素晴らしい!その関数はデータを完全に削除するわけではありません。名前が「field_deleted_data_」で始まるフィールドごとにdbテーブルを追加します。それはおそらく良いことです。しかし、人々はそれらのテーブルを削除することによって仕事を終えたいと思うかもしれません。
Shai

1
削除されたフィールドのデータは、cronの実行中に消去されます。これらのテーブルは削除しないでください。ドロップサイトがWSODになる可能性があります。
aaronbauman '16 / 09/15

4

うわー、フィールドを作成するのに2秒ほどかかります。

あなたはそれが「どこで」どこにあるかわからないので、基本的にはあなたがそこにあるものをすべて取り除くことを確実にするためにテーブルを探す必要があります...

  • Dropテーブルfield_data_FIELD_THE_NAME_YOU_GAVE_ITfield_revision_FIELD_THE_NAME_YOU_GAVE_IT

  • また、内field_configfield_config_instance一見のためnameのキー(およびbundleフィールド+あなたが名前のフィールドを結ばバンドルのキー)。これら2つのテーブルのエントリも削除します。

  • サイトのキャッシュをクリアします。


1
これを行わないでください。以下の回答を参照してください。field_delete_field()は、関連するフックを呼び出し、キャッシュもクリーンアップします。一般に、SQLを記述している場合、またはデータベースで直接操作している場合は、何か問題があります。
aaronbauman、2015

1
UIでフィールドの追加に失敗した場合。なぜAPIが不正なデータ/テーブルを削除するために機能すると想定するのですか?私はあなたの全体的な返答に同意しますが、すべてのケースの100%については同意しません。
テンケン

あなたは正しいです-私は元の質問を完全に読みませんでした。悪い!推奨される方法は、field_delete_field()を使用することですが、失敗した場合は、データベースに直接アクセスすることがおそらく最善の唯一の代替手段です。
aaronbauman 2015
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.