web-dev-qa-db-ja.com

残ったfield_deleted_ *テーブルを削除できますか?

私はたくさんのを持っています field_deleted_*データベース内のテーブルとどちらもdrush crまたはcronを実行すると削除されます。それらをデータベースから削除するだけで大​​丈夫ですか? Drupalに他の方法で削除するように指示するにはどうすればよいですか?

enter image description here

編集:4k4あたりのトラブルシューティングのヒント:

➜  default git:(HUHLR-172) ✗ drush ev "var_dump(\Drupal::state()->get('field.storage.deleted'))"
array(0) {
}

これの意味は:

これが空の場合、Drupalはこの情報がないとテーブル名のハッシュキーを推測することができないため、データベース内のテーブルも削除できます。

4
Kevin

いいえ、これは良い考えではありません。データベーステーブルだけでなく、削除する必要のあるものがたくさんあるからです。最初に使用状況をチェックせずにこれらのテーブルを削除すると(以下のトラブルシューティングを参照)、このエラーが発生します Cronエラーメッセージ。テーブルまたはビューが見つかりません:1146

削除されたフィールドはcronによってパージされますが、実行ごとに50行のみです。プロセスを加速したい場合は、cronをより頻繁に実行するか、field.settings.ymlでバッチサイズを増やします。

_purge_batch_size: 50
_

Cronの代わりに、コマンドラインからfield_purge_batch()を実行し、より高いバッチ制限(1000など)を使用して、メモリ/時間制限に達することなく削除できる行数を指定できます。

_drush ev "field_purge_batch(1000)"
_

トラブルシューティング

Cronまたはdrushコマンドの効果がなく、一部の行を削除しない場合でも(テーブルに行が残っている場合)、これらのテーブルにフィールドストレージがまだ登録されているかどうかを確認します。

_drush ev "var_dump(\Drupal::state()->get('field.storage.deleted'))"
_

これが空の場合、Drupalはこの情報がないとテーブル名のハッシュキーを推測することができないため、データベース内のテーブルも削除できます。

これが空でない場合、フィールドストレージ定義のこの出力を使用して、これをさらにデバッグできます(@MarioSteinitzのコメントを参照)。

10
4k4