PDOException: SQLSTATE[42S02] – Tabelul de bază nu a fost găsit (Drupal, Entități, Caching, Bază De Date)

Matthew a intrebat.

Deci, eu sunt într-o legătură și nu am nici o idee unde să merg. Primesc următorul mesaj acum, după ce am încercat să adaug un câmp nou la un tip de conținut:

Error message
PDOException: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'wrrc-data.cache_field' doesn't exist: DELETE FROM {cache_field} WHERE (cid LIKE :db_condition_placeholder_0 ESCAPE '\') ; Array ( [:db_condition_placeholder_0] => field_info_types:% ) in cache_clear_all() (line 167 of C:datahtdocswrrc-dataincludescache.inc).

Am căutat peste tot și nu reușesc să găsesc răspunsul potrivit pentru mine și sper că cineva care s-a confruntat cu acest coșmar infernal ar putea să mă ajute.

Am încercat să renunț la tabela „inexistentă” (deși o văd în directorul de fișiere) „cache_field”, „se presupune” că funcționează, așa că am continuat să creez o nouă tabelă (pentru a o înlocui pe cea eșuată). Toate site-urile la care am fost pentru această problemă au sugerat următorul cod:

CREATE TABLE IF NOT EXISTS `cache_field` (

cid varchar(255) NOT NULL DEFAULT ” COMMENT „Primary Key: Unique cache ID.’,data longblob COMMENT „O colecție de date pentru memoria cache.”,expire int(11) NOT NULL DEFAULT ‘0’ COMMENT „Un timestamp Unix care indică data la care ar trebui să expire intrarea în memoria cache sau 0 pentru niciodată.”,created int(11) NOT NULL DEFAULT ‘0’ COMMENT „Un timestamp Unix care indică data la care a fost creată intrarea în memoria cache.”,serialized smallint(6) NOT NULL DEFAULT ‘0’ COMMENT „Un indicator care arată dacă conținutul este serializat (1) sau nu (0).”,PRIMARY KEY (cid),KEY expire (expire)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=’Generic cache table for caching things not separated out…’;

Dar după ce am pornit această comandă sql, primesc următoarea eroare:

#1005 - Can't create table 'wrrc-data.cache_field' (errno: -1) (Details…) 

Nu-mi oferă mai multe informații (nici măcar presupusa pagină „Details” nu-mi oferă nimic, tot ce vorbește este despre background-ul pentru InnoDB, nimic care să adauge la eroarea în cauză.

Are cineva vreo sugestie? Chiar nu vreau să recreez site-ul deloc, pentru că așa sugeraseră unii pe alte site-uri, dar asta începe să mă obosească. Dacă va trebui să creez un alt site, există vreo modalitate de a simplifica procesul de introducere a datelor și de formatare fără ca eroarea să mă împiedice să mă plimb?

Mulțumesc anticipat, apreciez foarte mult. Matt

Comentarii

  • posibil duplicat al Drupal PDOException la crearea tabelului –  > Por M a m a D.
3 răspunsuri
M a m a D

Am răspuns deja la această întrebare aici și am rezolvat problema. Mulți oameni care lucrează cu Drupal se confruntă cu această problemă. Acesta este răspunsul:

Am avut aceeași problemă, iar în cazul meu problema a fost motorul tabelelor de baze de date: În mod implicit este InnoDB și (din anumite motive pe care încă nu trebuie să le înțeleg) Drupal raportează această eroare.

Trebuie să schimbați motorul bazei de date în MyISAM. În primul rând, trebuie să vă asigurați că tabelele care vor fi create de Drupal au ca motor MyISAM: În /includes/database/mysql/schema.inc, căutați createTableSql($name, $table), și schimbați InnoDB în MyISAM; apoi, salvați.
Deoarece aveți câteva tabele în baza de date, acestea trebuie să fie schimbate în MyISAM de asemenea, așa că pur și simplu exportați baza de date ca fișier .sql deschideți-l într-un editor de text și înlocuiți Engine=InnoDB cu Engine=MyISAM. Acum, în server phpmyadmin ștergeți toate tabelele din BD și importați noul .sql acolo. În acest fel, toate tabelele dvs. și tabelele care vor fi create de Drupal sunt MyISAM.

Comentarii

  • Al tău este cu siguranță cel mai promițător, (mai ales pentru că este literalmente singurul lucru pe care nu l-am făcut/ găsit. Cu toate acestea, după ce am exportat un fișier sql, l-am editat cu modificările pe care le-ați sugerat, acum am dat peste o altă problemă. Primesc următoarea eroare „#1064 – Aveți o eroare în sintaxa SQL; verificați manualul care corespunde versiunii serverului dvs. MySQL pentru a afla sintaxa corectă de utilizat lângă ‘phpMyAdmin SQL Dump — versiunea 4.3.11 –. phpmyadmin.net — — Host: 1′ la linia 1″ Aici este linkul către fișier link (este în text pentru dumneavoastră) –  > Por Matthew.
  • Trebuie să fie ceva simplu pe care îl fac greșit, doar că nu sunt sigur exact ce ar putea fi în acest moment. Dacă nu vedeți nimic, aș putea să o iau de la început și să mă asigur că încerc să evit problema înainte de a începe. –  > Por Matthew.
  • Voi verifica. Dar schimbați întotdeauna fișierul de schemă înainte de a instala drupal –  > Por M a m a D.
  • Pentru a exporta fișierul .sql goliți complet vechea bază de date. De asemenea, SET SQL_MODE și SET time_zone nu este necesar. –  > Por M a m a D.
Pierre.Vriens

Consultați linkul la https://www.drupal.org/node/2144205#comment-9288889 care sugerează acest lucru:

Dacă tabelul cache_field este corupt, ar trebui să puteți să îl ștergeți executând update.php sau cc all din drush. Dacă doriți să goliți conținutul tabelului fără a șterge și reconstrui schema, puteți șterge din cache_table sau truncate cache_table.

O altă sugestie este în același link, aflat la adresa https://www.drupal.org/node/2144205#comment-8368871

Dacă niciunul dintre aceste linkuri nu vă ajută (sau nu funcționează), atunci investigați ce modul creează acel tabel ca parte a procesului de instalare/activare. Apoi dezinstalați și reinstalați acel modul …

augusto

Când este vorba de proiectarea tipurilor de conținut, nu ar trebui să acționați asupra structurii bazei de date. Sugestia mea este să clonezi tipul de conținut și să lucrezi la cel nou. Dacă acest lucru nu funcționează, faceți unul complet nou