web-dev-qa-db-fra.com

Impossible de désinstaller les modules en raison de la table br_schedule manquante

Lorsque je clique sur l'onglet Désinstaller dans l'interface utilisateur ou que j'essaie de désinstaller un module avec Drush, j'obtiens les erreurs suivantes:

Drush:

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

Journal 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).

Je n'ai aucune idée de ce qu'est br_schedule donc je ne sais pas comment reconstruire cette table. J'ai installé Businesses Rules mais je ne vois aucun module br_schedule.

2
Brad O

Trouvé le problème. Mes mises à jour de base de données ne se produisent pas. Ran updatedb: statut avec drush et j'obtiens:

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.

"Correction des disparités de champ d'entité sur le champ de type de fichier." échoue donc la mise à jour "business_rules_schedule" ne se produit pas.

2
Brad O

J'ai créé un D8 vierge avec les règles métier installées et j'ai exporté la table br_schedule et l'ai importée dans le site affecté. Maintenant, je peux désinstaller des modules.

1
Brad O

La solution de contournement la plus simple, comme le mentionne @kevin, serait peut-être de télécharger adminer ou d'utiliser phpmyadmin existant si vous en avez et de créer ce tableau sans contenu exécutant ce qui suit (ou similaire) SQL command

CREATE TABLE br_schedule (
    ID int
);

puis réessayez pour voir s'il peut désinstaller

REMARQUE: utilisez avec prudence ce n'est pas une technique pare-balles, je l'ai utilisée plusieurs fois et j'ai pu terminer des désinstallations cassées sur des bases de données foirées mais en tant que mradcliffe mentionne que cela pourrait aussi gâcher les choses.

0
GiorgosK

Exécutez simplement "drush entity-updates" pour créer les entités avant d'exécuter drush updb.

0
Mete