Puncte:2

Problemă la eliminarea modulului de colectare pe teren

drapel cn

Recent, am migrat cu succes în instanța noastră drupal 8 de la modulul de colectare pe teren (cel mai recent alfa) la paragrafe. Acum încerc să elimin modulul de colectare a câmpurilor din instanța noastră drupal, dar nu poate fi eliminat deoarece este „utilizat în câmpul field_collection_item.field_sprechzeiten_zeitraum” (vezi captura de ecran din vizualizarea dezinstalării).

dezinstalarea field_collection este împiedicată

Când încerc să șterg acest câmp field_sprechzeiten_zeitraum, este afișat următorul mesaj de eroare:

Drupal\Core\Database\DatabaseExceptionWrapper: SQLSTATE[42S02]: Tabelul de bază sau vizualizarea nu a fost găsită: 1146 Tabelul 'druco_stage.field_collection_item__field_sprechzeiten_zeitraum' nu există: SELECT 'entity_id' FROM {field_collection_bunditen_prech'_prechzeiten_prechzeitraum; Matrice ( ) în field_collection_field_config_predelete() (linia 95 din modules/contrib/field_collection/field_collection.module).

Se pare că cineva a încercat să șteargă acest lucru mai devreme și ceva a mers prost, deoarece intrarea în baza de date a fost ștearsă, dar nu toate celelalte referințe sau intrarea nu a fost creată în primul rând.

Deoarece nu sunt un dezvoltator Drupal și doar administrez acest site, nu am nicio idee cum să mă descurc cu el. Vreau doar ca modulul field_collection să dispară, are cineva idee cum să rezolve această problemă?

hotwebmatter avatar
drapel nr
Mă bucur că răspunsul meu v-a dat un impuls în direcția bună! Cu toate acestea, așa cum a sugerat @leymannx în comentariile de mai jos, este mai bine să tăiați secțiunea „Editați:” din întrebarea de mai sus și să o lipiți într-un răspuns de mai jos, chiar dacă ați acceptat deja răspunsul meu. Acest lucru va ajuta pe viitor oamenii care caută o soluție la o problemă similară. Vă rugăm să luați în considerare! Mulțumesc anticipat.
Puncte:1
drapel nr

Aveți vreo copie de siguranță a bazei de date vechi? Puteți înregistra o copie a site-ului într-un mediu de dezvoltare locală și puteți restaura o versiune veche a bazei de date pentru a vedea dacă tabelele lipsă pot fi recreate, permițându-vă să eliminați field_collection modul.

În general, este o idee proastă să faceți astfel de modificări direct în baza de date (care este probabil ceea ce a făcut cineva pentru a crea problema în primul rând), dar este posibil să puteți crea un tabel gol cu ​​aceeași structură analizând tabelul în vechea copie de rezervă:

DESCRIE field_collection_item__field_sprechzeiten_zeitraum;

Înarmat cu aceste informații, este posibil să puteți crea o structură de tabel potrivită în baza de date de producție -- din nou, lucrând într-o copie locală, mai degrabă decât pe serverul de producție.

Dacă nu sunt disponibile copii de rezervă adecvate, este posibil să puteți utiliza field_collection modul pentru a adăuga field_collection_item__field_sprechzeiten_zeitraum la field_sprechzeiten pachet. (Nu veți putea recrea conținutul câmpului în acest fel, dar oricum încercați doar să-l ștergeți.)

Odată ce tabelul lipsă există (chiar dacă este gol), este posibil să puteți elimina câmpul fără eroare și să dezinstalați modulul. Noroc.

Puncte:1
drapel cn

Am rezolvat problema creând un nou tabel, așa cum a sugerat hotwebmatter. A fost destul de ușor pentru că puteam folosi structura altor câmpuri de colectare de câmpuri și doar redenumi câmpul de valoare. Structura arăta astfel:

field_collection_item__field_sprechzeiten_zeitraum: tabel
+ coloane
    pachet: varchar(128)
    șters: tinyint(4) NN
    entity_id: int(10) NN
    revision_id: int(10)
    cod limba: varchar(32) NN
    delta: int(10) NN
    field_sprechzeiten_zeitraum_value: varchar(255)
+ indici
    bundle: index (bundle) tip btree
    revision_id: index (revision_id) tip btree
+ chei
    #1: PK (entity_id, deleted, langcode, delta)

După ce am creat acest lucru, am curățat entitățile de colecție de câmpuri (exista un link în secțiunea de dezinstalare) și am eliminat câmpurile rămase din tipurile mele de conținut. Caseta de selectare pentru dezinstalarea modulului era încă dezactivată, așa că am șters fiecare tabel din baza de date care conținea field_deleted_data și field_deleted_revision. Acest lucru nu a ajutat, așa că am căutat în tabelul de configurare linia cu numele core.extension. Aici am deserializat datele, am eliminat partea cu colectarea câmpului și am serializat-o din nou.

Între timp, întotdeauna rulez job-ul cron și șterg cache-urile. Caseta de selectare pentru dezinstalare era încă dezactivată și, întâmplător, am văzut că caseta de selectare pentru colectarea câmpurilor din secțiunea de instalare a modulului nu mai era bifată. L-am verificat si am incercat sa il instalez. A început și apoi am fost redirecționat către secțiunea de instalare a modulelor. colecția de câmpuri era încă nebifată și când am examinat fila de dezinstalare, a dispărut în sfârșit.

A fost obositor, dar cu un final fericit.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.