web-dev-qa-db-ja.com

テーブルbr_scheduleがないため、モジュールをアンインストールできません

UIの[アンインストール]タブをクリックするか、Drushでモジュールをアンインストールしようとすると、次のエラーが発生します。

ドラッシュ:

SQLSTATE[42S02]: Base table or view not found: 
1146 Table 'DATABASENAME.br_schedule' doesn't exist

Drupalログ:

Drupal\Core\Database\DatabaseExceptionWrapper: SQLSTATE[42S02]: 
Base table or view not found: 
1146 Table 'DATABASENAME.br_schedule' doesn't exist: 
SELECT base_table.vid AS vid, 
base_table.id AS id FROM {br_schedule} 
base_table LIMIT 1 OFFSET 0; Array ( ) in 
Drupal\Core\Entity\EntityStorageBase->hasData() 
(line 552 of MYSITEPATH/core/lib/Drupal/Core/Entity/EntityStorageBase.php).

私はbr_scheduleが何であるかわからないので、そのテーブルを再構築する方法がわかりません。 Businesses Rulesをインストールしましたが、br_scheduleモジュールが表示されません。

2
Brad O

問題が見つかりました。データベースの更新が行われていません。 drushでupdatedb:statusを実行すると、次のようになります。

file_entity                           8004        hook_update_n   Fix entity field mismatches on the file type field.
business_rules_schedule entity type               entity-update   The Schedule entity type needs to be installed.
file entity type                                  entity-update   The File type field needs to be updated.
node entity type                                  entity-update   The node.field_zipcode field needs to be updated.

「ファイルタイプフィールドのエンティティフィールドの不一致を修正してください。」が失敗しているため、「business_rules_schedule」の更新は行われていません。

2
Brad O

ビジネスルールをインストールして空のD8をスピンアップし、br_scheduleテーブルをエクスポートして、影響を受けるサイトにインポートしました。これでモジュールをアンインストールできます。

1
Brad O

おそらく、@ kevinが言及する最も簡単な回避策は、 adminer をダウンロードするか、既存のphpmyadminを使用して、次の(または同様の)SQL command

CREATE TABLE br_schedule (
    ID int
);

次に、アンインストールできるかどうかもう一度確認してください

注:防弾技術ではないので注意して使用してください。私は数回使用し、混乱したデータベースで壊れたアンインストールを完了することができましたが、mradcliffeとしてそれは同様に物事を台無しにするかもしれないと述べています。

0
GiorgosK

Drush updbを実行する前に、「drush entity-updates」を実行してエンティティを作成するだけです。

0
Mete