web-dev-qa-db-ja.com

「削除保留フィールド」モジュールのアンインストールを停止する-手動で削除する方法は?

動的エンティティ参照モジュールをアンインストールしようとすると、「フィールド保留削除」エラーが発生します。ティックがグレー表示されているため、モジュールを無効にすることもできません(Drupal 8)でモジュールを無効にする方法がない場合を除きます)。

私はcronを実行して何度もキャッシュをクリアし、/ admin/reports/fieldsをチェックしましたが、このモジュールを使用するフィールドについては言及されていません。

Drupal 7がfield_configデータベーステーブルからフィールドを削除するように言っている7の提案を見つけましたが、このテーブルはDrupal 8.に存在しません。これらのゾンビフィールドを取り除く方法はありますか?それらはどこかに保存する必要があります!

Drushを使用するように言わないでください。できればいいのですが、信じられますが、SFTPとphpmyadminだけで、Shellアクセスがありません。

3
naomi

Drupal 8で削除されたフィールドはkey_value テーブル。

それらを見つけるには:

select * from key_value where name = "field.field.deleted" or name = "field.storage.deleted"

値はblobとして保存されますが、表示することもできます(たとえば、phpmyadminでは、クリックしてダウンロードし、vimなどで表示できます)。この値は人間にはあまり意味がありませんが、コードの出力とさまざまなエラーのログ記録を行った結果、これらのエントリがアンインストールを妨げていることがわかりました。テーブルをバックアップしてエントリを削除したところ、モジュールをアンインストールできました。

同じ問題が関連する問題への回答としてここで行われます:

https://drupal.stackexchange.com/a/230199/25792

6
naomi

フィールドはcron runによって削除されます。ただし、バッチサイズは固定です。より高い値を設定できます。 drushを使用できない場合は、UIでこれを実行できます。ページ/ admin/config/development/configuration/single/importに移動し、field.settingsより高いバッチサイズ:

purge_batch_size: 1000

再度cronを実行します。

enter image description here

3
4k4

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

それから私は防止されたモジュールをアンインストールすることができます。

3
sealionking

私のシステムでfield_collectionモジュールをアンインストールするために、field_collection_itemテーブルを空にする必要がありました。他の誰かがここで他の提案を試しても問題が解決しない場合。

0
ryrye