Come risolvere l'errore mysql 1031 - Il motore di archiviazione della tabella per "catalog_product_relation" non ha questa opzione?


30

Sto cercando di creare una nuova versione di sviluppo del nostro negozio Magento. Ho fatto un'installazione pulita di El Capitan e ho apache in esecuzione con PHP, Mysql (versione 5.7.10) ecc. Ho anche phpmyadmin in esecuzione e ho creato un database per Magento. Tuttavia, quando provo a importare il backup dal nostro sito di produzione ottengo l'errore:

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

Ho provato a importare il file .sql tramite il Terminale con il comando:

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

Mi sono perso qui. Google ha smesso per un po 'di tempo ma non è stato possibile trovare la soluzione. Sto usando lo stesso motore del database di produzione.

Qualcuno ha qualche idea?


Come hai creato l'esportazione? Hai controllato il tuo database locale se ci sono già tabelle create (dopo averlo testato più volte)? In tal caso, eliminare tutte quelle tabelle prima di eseguire una nuova importazione.
Anna Völkl,

1
Altrimenti: forse qualcosa del genere: stackoverflow.com/a/32083169/865443
Anna Völkl

Risposte:


49

Di recente, ho avuto lo stesso problema con l'importazione.

PROBLEMA

Ciò è probabilmente dovuto all'opzione tabella che hai nel tuo DDL CREATE TABLE: ROW_FORMAT=FIXED

Controlliamo se esiste una tale stringa nel dump SQL (ad es. Magento-db-dump.sql).

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

Che è risultato come

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

SOLUZIONE

La rimozione ROW_FORMAT=FIXEDdell'opzione da CREATE TABLE DDL risolverà il problema. Quindi proviamo possibili soluzioni.

1 #

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

Questo non ha funzionato per me in MacOSx che ha provocato il seguente errore:

sed: 1: “magento-db-dump.sql”: codice comando non valido m

2 #

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

E anche questo è risultato come:

sed: errore RE: sequenza di byte non valida

# 3 Ma questo ha funzionato per me in MacOSx

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

( fonte )


Per me il seguente comando ha funzionato:find -name "mysql_dump.sql" | xargs perl -pi -e 's/ROW_FORMAT=FIXED//g'
Wasiq Shahrukh,

1. ha lavorato per me su Ubuntu
Joel Davey il

@JoelDavey Sì 1 # funziona in Ubuntu. Mi riferivo a MacOS.
MagoPsycho

10

Mi sono imbattuto nello stesso problema durante il tentativo di importare un dump del database Magento da MySQL 5.5 a MySQL 5.7. Il problema sembra essere l'opzione della tabella ROW_FORMAT = FIXED su due tabelle InnoDB. La rimozione delle due occorrenze di questa opzione dal dump del database ha permesso di eseguire l'importazione senza errori.

Sembra che questa opzione sia rilevante solo per le tabelle MyISAM , almeno in MySQL 5.7.


1
Piccola aggiunta: è correlata all'impostazione innodb_strict_modeche era disattivata per impostazione predefinita, ma è abilitata per impostazione predefinita a partire da MySQL 5.7.7 (secondo la documentazione di MySQL).
Jisse Reitsma,

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

Lavoro multipiattaforma (Mac + Linux)


ha funzionato perfettamente su Linux Lint ....
Andrew Smith il

6

Un'altra opzione sarebbe quella di aggiungere innodb_strict_mode = offal tuo file di configurazione MySQL. Ho riscontrato questo errore utilizzando le installazioni automatiche di mageruncui mi impediva di modificare il file SQL. Non sono sicuro se la disabilitazione della modalità rigorosa di InnoDb sia desiderabile in un ambiente di produzione, ma almeno funziona in un ambiente di sviluppo.


1

Quella tabella si aspetta che sia InnoDB. Verificherei le tue impostazioni mysql per assicurarmi di averlo abilitato / permesso. Inoltre, è possibile il suggerimento di possedere quella tabella esistente. Vorrei rimuovere tutte le tabelle e riprovare dopo aver verificato che InnoDB funziona.
Appena uscendo dal messaggio di errore che hai fornito, mi aspetto che InnodDB non sia pronto o non stia lavorando sulla tua installazione corrente.


Ho appena controllato mysql. è abilitato e impostato come motore predefinito. Lo sto importando su un database nuovo di zecca senza tabelle. Proverò la soluzione che ha detto @Anna Völkl .. Spero che sia d'aiuto
Woulei,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.