Comment réparer l'erreur 1031 de mysql - Le moteur de stockage de table pour 'catalog_product_relation' n'a pas cette option?

30

J'essaie de créer une nouvelle version de développement de notre boutique Magento. J'ai fait une installation propre d'El Capitan et j'ai fait fonctionner apache avec PHP, Mysql (version 5.7.10) etc. J'ai également phpmyadmin en cours d'exécution et créé une base de données pour Magento. Cependant, lorsque j'essaie d'importer la sauvegarde de notre site de production, j'obtiens l'erreur:

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

J'ai essayé d'importer le fichier .sql via le terminal avec la commande:

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

Je suis perdu ici. Google a quitté pendant un certain temps mais n'a pas pu trouver la solution. J'utilise le même moteur que dans la base de données de production.

Quelqu'un a une idée?

Woulei
la source
Comment avez-vous créé l'exportation? Avez-vous vérifié votre base de données locale si des tables ont déjà été créées (après l'avoir testée plusieurs fois)? Si tel est le cas, supprimez toutes ces tables avant d'exécuter une nouvelle importation.
Anna Völkl
1
Sinon: Peut-être quelque chose comme ça: stackoverflow.com/a/32083169/865443
Anna Völkl

Réponses:

49

Récemment, j'ai eu le même problème avec l'importation.

PROBLÈME

Cela est probablement dû à l'option de table que vous avez dans votre DDL CREATE TABLE: ROW_FORMAT=FIXED

Vérifions s'il existe une telle chaîne dans le vidage SQL (Ex: magento-db-dump.sql).

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

Ce qui s'est traduit par

) 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';

SOLUTION

La suppression de l' ROW_FORMAT=FIXEDoption de CREATE TABLE DDL résoudra le problème. Essayons donc les solutions possibles.

#1

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

Cela n'a pas fonctionné pour moi dans MacOSx, ce qui a entraîné l'erreur suivante:

sed: 1: "magento-db-dump.sql": code de commande non valide m

# 2

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

Et même cela s'est traduit par:

sed: erreur RE: séquence d'octets illégale

# 3 Mais celui-ci a fonctionné pour moi dans MacOSx

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

( source )

MagePsycho
la source
Pour moi, la commande suivante a fonctionné:find -name "mysql_dump.sql" | xargs perl -pi -e 's/ROW_FORMAT=FIXED//g'
Wasiq Shahrukh
1. a travaillé pour moi sur ubuntu
Joel Davey
@JoelDavey Oui 1 # fonctionne dans Ubuntu. Je parlais de MacOS.
MagePsycho
10

J'ai rencontré le même problème lors de la tentative d'importation d'un vidage de base de données Magento de MySQL 5.5 dans MySQL 5.7. Le problème semble être l'option de table ROW_FORMAT = FIXED sur deux tables InnoDB. La suppression des deux occurrences de cette option du vidage de la base de données a permis à l'importation de s'exécuter sans erreur.

Il semble que cette option ne concerne que les tables MyISAM , au moins dans MySQL 5.7.

mustdobetter
la source
1
Petit ajout: il est lié au paramètre innodb_strict_modequi était désactivé par défaut, mais est activé par défaut à partir de MySQL 5.7.7 (selon la documentation MySQL).
Jisse Reitsma
8
sed -ie 's/ROW_FORMAT=FIXED//g' magento-db-dump.sql

Plateforme de travail croisée (Mac + Linux)

Aurélien
la source
a parfaitement fonctionné sur Linux Mint ....
Andrew Smith
6

Une autre option serait d'ajouter innodb_strict_mode = offà votre fichier de configuration MySQL. J'ai rencontré cette erreur en utilisant les installations sans assistance magerunqui m'ont empêché de modifier le fichier SQL. Je ne sais pas si la désactivation du mode strict InnoDb est souhaitable dans un environnement de production, mais au moins cela fonctionne dans un environnement de développement.

Jisse Reitsma
la source
1

Cette table devrait être InnoDB. Je vérifierais vos paramètres mysql pour m'assurer que vous l'avez activé / autorisé. Il est également possible de suggérer que cette table existe. Je voudrais supprimer toutes les tables et réessayer après avoir vérifié qu'InnoDB fonctionne.
En sortant du message d'erreur que vous avez fourni, je m'attends à ce qu'InnodDB ne soit pas prêt ou ne fonctionne pas sur votre installation actuelle.

RussellAlbin
la source
Je viens de vérifier mysql. il est activé et défini comme moteur par défaut. Je l'importe sur une toute nouvelle base de données sans aucune table. Va essayer la solution que @Anna Völkl a dit .. J'espère que cela aide
Woulei