Cómo reparar el error 1031 de mysql: el motor de almacenamiento de tablas para 'catalog_product_relation' no tiene esta opción?

30

Estoy tratando de hacer una nueva versión de desarrollo de nuestra tienda Magento. Realicé una instalación limpia de El Capitan y conseguí ejecutar Apache con PHP, Mysql (versión 5.7.10), etc. También tengo phpmyadmin ejecutándose y creé una base de datos para Magento. Sin embargo, cuando intento importar la copia de seguridad de nuestro sitio de producción, aparece el error:

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

Intenté importar el archivo .sql a través de la Terminal con el comando:

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

Estoy perdido aquí Google dejó de fumar por algún tiempo pero no pudo encontrar la solución. Estoy usando el mismo motor que en la base de datos de producción.

¿Alguien tiene alguna idea?

Woulei
fuente
¿Cómo creaste la exportación? ¿Revisó su base de datos local si ya hay tablas creadas (después de probarla varias veces)? Si es así, elimine todas esas tablas antes de ejecutar una nueva importación.
Anna Völkl
1
De lo contrario: tal vez algo como esto: stackoverflow.com/a/32083169/865443
Anna Völkl

Respuestas:

49

Recientemente tuve el mismo problema con la importación.

PROBLEMA

Esto probablemente se deba a la opción de tabla que tiene en su DDL CREATE TABLE: ROW_FORMAT=FIXED

Verifiquemos si hay alguna cadena de este tipo en el volcado de SQL (Ej: magento-db-dump.sql).

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

Que resultó como

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

SOLUCIÓN

Eliminar la ROW_FORMAT=FIXEDopción de CREATE TABLE DDL solucionará el problema. Entonces intentemos posibles soluciones.

# 1

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

Esto no funcionó para mí en MacOSx, lo que resultó en el siguiente error:

sed: 1: “magento-db-dump.sql”: código de comando no válido m

# 2

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

E incluso esto resultó como:

sed: error RE: secuencia de bytes ilegal

# 3 Pero este me funcionó en MacOSx

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

( fuente )

MagePsycho
fuente
Para mí, el siguiente comando funcionó:find -name "mysql_dump.sql" | xargs perl -pi -e 's/ROW_FORMAT=FIXED//g'
Wasiq Shahrukh
1. trabajó para mí en ubuntu
Joel Davey
@JoelDavey Sí 1 # funciona en Ubuntu. Me refería a MacOS.
MagePsycho
10

Me encontré con el mismo problema al intentar importar un volcado de base de datos Magento de MySQL 5.5 a MySQL 5.7. El problema parece ser la opción de tabla ROW_FORMAT = FIJA en dos tablas InnoDB. La eliminación de las dos apariciones de esta opción del volcado de la base de datos permitió que la importación se ejecutara sin error.

Parece que esta opción solo es relevante para las tablas MyISAM , al menos en MySQL 5.7.

mustdobetter
fuente
1
Pequeña adición: está relacionado con la configuración innodb_strict_modeque solía estar desactivada de manera predeterminada, pero está habilitada de manera predeterminada a partir de MySQL 5.7.7 (de acuerdo con la documentación de MySQL).
Jisse Reitsma
8
sed -ie 's/ROW_FORMAT=FIXED//g' magento-db-dump.sql

Trabajo multiplataforma (Mac + Linux)

Aurélien
fuente
funcionó perfectamente en linux mint ....
Andrew Smith
6

Otra opción sería agregar innodb_strict_mode = offa su archivo de configuración de MySQL. Me topé con este error usando las instalaciones desatendidas magerunque me impidieron editar el archivo SQL. No estoy seguro de si es conveniente deshabilitar el modo estricto InnoDb en un entorno de producción, pero al menos funciona en un entorno de desarrollo.

Jisse Reitsma
fuente
1

Esa tabla espera ser InnoDB. Verificaría su configuración de mysql para asegurarme de que tenga eso habilitado / permitido. Además, la sugerencia de que puede tener esa tabla existente es posible. Quitaría todas las tablas y volvería a intentarlo después de validar que InnoDB está funcionando.
Simplemente apagando el mensaje de error que proporcionó, esperaría que InnodDB no esté listo o trabajando en su instalación actual.

RussellAlbin
fuente
Acabo de comprobar mysql. está habilitado y configurado como el motor predeterminado. Lo estoy importando en una nueva base de datos sin ninguna tabla. Probaré la solución que @Anna Völkl dijo .. Espero que ayude
Woulei