動的エンティティ参照モジュールをアンインストールしようとすると、「フィールド保留削除」エラーが発生します。ティックがグレー表示されているため、モジュールを無効にすることもできません(Drupal 8)でモジュールを無効にする方法がない場合を除きます)。
私はcronを実行して何度もキャッシュをクリアし、/ admin/reports/fieldsをチェックしましたが、このモジュールを使用するフィールドについては言及されていません。
Drupal 7がfield_config
データベーステーブルからフィールドを削除するように言っている7の提案を見つけましたが、このテーブルはDrupal 8.に存在しません。これらのゾンビフィールドを取り除く方法はありますか?それらはどこかに保存する必要があります!
Drushを使用するように言わないでください。できればいいのですが、信じられますが、SFTPとphpmyadminだけで、Shellアクセスがありません。
Drupal 8で削除されたフィールドはkey_value
テーブル。
それらを見つけるには:
select * from key_value where name = "field.field.deleted" or name = "field.storage.deleted"
値はblobとして保存されますが、表示することもできます(たとえば、phpmyadminでは、クリックしてダウンロードし、vimなどで表示できます)。この値は人間にはあまり意味がありませんが、コードの出力とさまざまなエラーのログ記録を行った結果、これらのエントリがアンインストールを妨げていることがわかりました。テーブルをバックアップしてエントリを削除したところ、モジュールをアンインストールできました。
同じ問題が関連する問題への回答としてここで行われます:
7000以上のエンティティで使用されていたフィールドで同じ問題が発生しましたが、purge_batch_size:1000は機能しませんが、数を7000以上に増やします。
そう
purge_batch_size:10000
私のインスタンスで動作します。
私は次のコマンドを実行するだけでこの問題を解決しました:
drush php-eval 'field_purge_batch(10000);'
に基づく
https://drupal.stackexchange.com/a/261669/9046
次に実行します
ドラッシュcron
それから私は防止されたモジュールをアンインストールすることができます。
私のシステムでfield_collectionモジュールをアンインストールするために、field_collection_itemテーブルを空にする必要がありました。他の誰かがここで他の提案を試しても問題が解決しない場合。