Gewusst wie: MySQL-Fehler 1031 zu beheben - Table Storage Engine für 'catalog_product_relation' hat diese Option nicht?

30

Ich versuche, eine neue Entwicklungsversion unseres Magento-Shops zu erstellen. Ich habe eine saubere Installation von El Capitan gemacht und Apache mit PHP, MySQL (Version 5.7.10) usw. zum Laufen gebracht. Ich habe auch phpmyadmin ausgeführt und eine Datenbank für Magento erstellt. Wenn ich jedoch versuche, das Backup von unserer Produktionsstätte zu importieren, erhalte ich die Fehlermeldung:

ERROR 1031 (HY000) at line 291001: Table storage engine for 'catalog_product_relation' doesn't have this option

Ich habe versucht, die .sql-Datei über das Terminal mit dem folgenden Befehl zu importieren:

mysql -h localhost -u <user> -D <database> -p < <file>

Ich bin hier verloren. Google für einige Zeit beendet, konnte aber die Lösung nicht finden. Ich verwende den gleichen Motor wie in der Produktionsdatenbank.

Hat jemand eine Idee?

Woulei
quelle
Wie haben Sie den Export erstellt? Haben Sie Ihre lokale Datenbank überprüft, ob bereits Tabellen erstellt wurden (nachdem Sie diese mehrmals getestet haben)? Wenn ja, löschen Sie alle diese Tabellen, bevor Sie einen neuen Import ausführen.
Anna Völkl
1
Ansonsten: Vielleicht in etwa so: stackoverflow.com/a/32083169/865443
Anna Völkl

Antworten:

49

Vor kurzem hatte ich das gleiche Problem mit dem Import.

PROBLEM

Dies liegt wahrscheinlich an der Tabellenoption, die Sie in Ihrer CREATE TABLE-DDL haben: ROW_FORMAT=FIXED

Lassen Sie uns überprüfen, ob es einen solchen String im SQL-Dump gibt (Beispiel: magento-db-dump.sql).

cat magento-db-dump.sql | grep '=FIXED'

Welches resultierte als

) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Catalog Product Relation Table';
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Catalog Product To Website Linkage Table';

LÖSUNG

Durch Entfernen der ROW_FORMAT=FIXEDOption aus CREATE TABLE DDL wird das Problem behoben. Probieren wir also mögliche Lösungen aus.

# 1

sed -i 's/ROW_FORMAT=FIXED//g' magento-db-dump.sql

Dies funktionierte unter MacOSx nicht, was zu folgendem Fehler führte:

sed: 1: "magento-db-dump.sql": ungültiger Befehlscode m

# 2

sed -i '' 's/ROW_FORMAT=FIXED//g' magento-db-dump.sql

Und selbst das ergab sich als:

sed: RE-Fehler: unzulässige Bytefolge

# 3 Aber dieser hat bei mir unter MacOSx funktioniert

LC_ALL=C sed -i '' 's/ROW_FORMAT=FIXED//g' magento-db-dump.sql

( Quelle )

MagePsycho
quelle
Für mich hat der folgende Befehl funktioniert:find -name "mysql_dump.sql" | xargs perl -pi -e 's/ROW_FORMAT=FIXED//g'
Wasiq Shahrukh
1. arbeitete für mich an Ubuntu
Joel Davey
@JoelDavey Ja 1 # funktioniert in Ubuntu. Ich bezog mich auf MacOS.
MagePsycho
10

Ich bin auf dasselbe Problem gestoßen, als ich versucht habe, einen Magento-Datenbank-Dump von MySQL 5.5 in MySQL 5.7 zu importieren. Das Problem scheint die Tabellenoption ROW_FORMAT = FIXED für zwei InnoDB-Tabellen zu sein. Durch Entfernen der beiden Vorkommen dieser Option aus dem Datenbank-Dump konnte der Import fehlerfrei ausgeführt werden.

Es scheint, dass diese Option nur für MyISAM-Tabellen relevant ist , zumindest in MySQL 5.7.

mustdobetter
quelle
1
Kleiner Zusatz: Es hängt mit der Einstellung zusammen, innodb_strict_modedie früher standardmäßig deaktiviert war, aber ab MySQL 5.7.7 (gemäß der MySQL-Dokumentation) standardmäßig aktiviert ist.
Jisse Reitsma
8
sed -ie 's/ROW_FORMAT=FIXED//g' magento-db-dump.sql

Plattformübergreifend arbeiten (Mac + Linux)

Aurélien
quelle
perfekt auf Linux Mint gearbeitet ....
Andrew Smith
6

Eine andere Möglichkeit wäre, innodb_strict_mode = offzu Ihrer MySQL-Konfigurationsdatei hinzuzufügen . Ich bin auf diesen Fehler gestoßen, indem ich die unbeaufsichtigten Installationen verwendet habe, magerundie mich davon abgehalten haben, die SQL-Datei zu bearbeiten. Ich bin nicht sicher, ob das Deaktivieren des InnoDb-Strict-Modus in einer Produktionsumgebung wünschenswert ist, aber zumindest funktioniert es in einer Entwicklungsumgebung.

Jisse Reitsma
quelle
1

Diese Tabelle wird voraussichtlich InnoDB sein. Ich würde Ihre MySQL-Einstellungen überprüfen, um sicherzustellen, dass Sie das aktiviert / erlaubt haben. Auch der Vorschlag, dass diese Tabelle möglicherweise vorhanden ist, ist möglich. Ich würde alle Tabellen entfernen und es erneut versuchen, nachdem Sie überprüft haben, dass InnoDB funktioniert.
Ich gehe davon aus, dass InnodDB nicht bereit ist oder an Ihrer aktuellen Installation arbeitet.

RussellAlbin
quelle
Ich habe gerade mysql überprüft. Es ist aktiviert und als Standardmodul festgelegt. Ich importiere es in eine brandneue Datenbank ohne Tabellen. Will versuchen, die Lösung, die @Anna Völkl sagte .. Hoffe, es hilft
Woulei