it-swarm.com.de

PDOException beim Erstellen der Tabelle: Basistabelle oder Ansicht nicht gefunden

Ich habe Drupal läuft auf MariaDB 5.5.33. Wenn ich update.php starte (nach dem Upgrade auf Drupal 7.28 von Drupal) = 6) Ich erhalte eine Fehlermeldung:

Fehlgeschlagen: PDOException: SQLSTATE [42S02]: Basistabelle oder Ansicht nicht gefunden: 1146 Tabelle 'webdb.location_country' existiert nicht: CREATE TABLE {location_country} (code CHAR (2) NOT NULL COMMENT 'Primärschlüssel : ISO-Ländercode mit zwei Buchstaben ', name VARCHAR (255) NICHT NULL STANDARD' 'KOMMENTAR' Vollständiger Ländername ', PRIMÄRER SCHLÜSSEL (code)) ENGINE = InnoDB STANDARD-CHARAKTER SET utf8 KOMMENTAR' Von location.module verwaltete Länderdaten. '; Array () indb_create_table () (Zeile 2720 von /home/web/public_html/includes/database/database.inc).

Wenn ich versuche, Befehl auszuführen

CREATE TABLE {location_country} (code CHAR (2) NICHT NULL KOMMENTAR 'Primärschlüssel: ISO-Ländercode mit zwei Buchstaben', name VARCHAR (255) NICHT NULL STANDARD '' KOMMENTAR 'Vollständiger Ländername ', PRIMARY KEY (code)) ENGINE = InnoDB DEFAULT CHARACTER SET utf8 COMMENT' Von location.module verwaltete Länderdaten. ';

in phpMyAdmin erhalte ich eine Fehlermeldung

# 1064 - Sie haben einen Fehler in Ihrer SQL-Syntax. Überprüfen Sie das Handbuch, das Ihrer MariaDB-Serverversion entspricht, auf die richtige Syntax für '{location_country} (code CHAR (2) NOT NULL COMMENT' Primärschlüssel: Zwei Buchstaben IS 'in Zeile 1

Aber ich konnte nicht herausfinden, wo das Problem liegt.

8
Tilia

Ich hatte das gleiche Problem, und in meinem Fall war das Problem die Datenbanktabellen-Engine: Standardmäßig ist es InnoDB und (aus bestimmten Gründen muss ich es immer noch nicht verstehen) Drupal meldet diesen Fehler .

Sie müssen das Datenbankmodul in MyISAM ändern. Zunächst müssen Sie sicher sein, dass die Tabellen, die von Drupal MyISAM als Engine erstellt werden sollen) erstellt werden: Suchen Sie in /includes/database/mysql/schema.inc Nach createTableSql($name, $table) und Ändern Sie InnoDB in MyISAM und speichern Sie es.
Da Ihre Datenbank einige Tabellen enthält, müssen diese ebenfalls in MyISAM geändert werden. Exportieren Sie die Datenbank einfach als SQL-Datei. Öffnen Sie sie in einem Texteditor und ersetzen Sie Engine=InnoDB mit Engine=MyISAM. Löschen Sie nun auf dem Server phpmyadmin alle Tabellen der DB und importieren Sie dort die neue Datei .sql. Auf diese Weise sind alle Ihre Tabellen und Tabellen, die von Drupal] erstellt werden, MyISAM.

6
M a m a D

Da andere Antworten (einschließlich solcher, die in keiner Weise mit der InnoDB-Engine zu tun haben) auf Fragen zu dieser PDOException als Duplikate markiert sind und auf diese umleiten, ist dies vermutlich der kanonische Ort für Antworten zu diesem Problem.

Ich habe dies mehrmals bei der Deinstallation eines Moduls festgestellt, und die gesuchte Tabelle ist auf der Site nicht vorhanden (weil sie versehentlich gelöscht wurde, weil die Schemadefinition in .install Einen Tippfehler enthält, oder für aus einem anderen Grund).

Die einfachste Möglichkeit, dies zu beheben, besteht darin, das Datenbankaktualisierungsskript (update.php) Manuell auszuführen.

Nachdem Ihre Site wieder zum Leben erweckt wurde, sollten Sie versuchen, die Grundursache des Problems herauszufinden und zu beheben.

3
Free Radical

Bei Verwendung als Raw-SQL müssen Sie die geschweiften Klammern um den Tabellennamen entfernen.

z.B:

CREATE TABLE location_country ( `code` CHAR(2) NOT NULL COMMENT 'Primary Key: Two letter ISO Country Code', `name` VARCHAR(255) NOT NULL DEFAULT '' COMMENT 'Full Country Name ', PRIMARY KEY (`code`) ) ENGINE = InnoDB DEFAULT CHARACTER SET utf8 COMMENT 'Country data managed by location.module.';
2
David Thomas

Dies ist die gleiche Fehlermeldung, die beim Verschieben von Drupal 7 von einer Entwicklungssite zu einer anderen Entwicklungssite auf meinem Laptop aufgetreten ist. Nach dem Überprüfen der Tabellen in der Datenbank Drupal) Ich habe festgestellt, dass der vollständige SQL-Speicherauszug nicht importiert wurde (mit Adminer und der Option "Vom Server", adminer.sql).

Suchen Sie nach Drupal 7 Datenbanktabellen, die sich alphabetisch dem Ende des SQL-Dumps nähern, wie: Benutzer * , Ansichten * , Webform * , Workbench * , xmlsitemap * , um zu sehen, ob alles importiert wurde.

Ich benutzte drush sql-cli < database.sql, um den SQL-Speicherauszug in die Drupal -Datenbank zu importieren, nachdem alle Datenbanktabellen mit drush sql-drop.

1
frederickjh