Como corrigir erro mysql 1031 - O mecanismo de armazenamento de tabela para 'catalog_product_relation' não tem essa opção?

30

Estou tentando criar uma nova versão de desenvolvimento de nossa loja Magento. Fiz uma instalação limpa do El Capitan e o apache foi executado com PHP, Mysql (versão 5.7.10) etc. Também tenho o phpmyadmin em execução e criei um banco de dados para o Magento. No entanto, quando tento importar o backup do nosso site de produção, recebo o erro:

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

Tentei importar o arquivo .sql através do terminal com o comando:

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

Eu estou perdido aqui. O Google parou por algum tempo, mas não conseguiu encontrar a solução. Estou usando o mesmo mecanismo do banco de dados de produção.

Alguém tem alguma ideia?

Woulei
fonte
Como você criou a exportação? Você verificou seu banco de dados local se já existem tabelas criadas (após testá-lo várias vezes)? Nesse caso, exclua todas essas tabelas antes de executar uma nova importação.
Anna Völkl
1
Caso contrário: Talvez algo parecido com isto: stackoverflow.com/a/32083169/865443 #
Anna Völkl

Respostas:

49

Recentemente, tive o mesmo problema com a importação.

PROBLEMA

Provavelmente, isso se deve à opção de tabela que você possui no seu CREATE TABLE DDL: ROW_FORMAT=FIXED

Vamos verificar se existe alguma string no dump SQL (Ex: magento-db-dump.sql).

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

O que resultou 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';

SOLUÇÃO

A ROW_FORMAT=FIXEDopção de remoção de CREATE TABLE DDL corrigirá o problema. Então, vamos tentar soluções possíveis.

# 1

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

Isso não funcionou para mim no MacOSx, o que resultou no seguinte erro:

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

# 2

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

E mesmo isso resultou em:

erro sed: RE: sequência de bytes ilegal

# 3 Mas este funcionou para mim no MacOSx

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

( fonte )

Mago Psico
fonte
Para mim, o seguinte comando funcionou:find -name "mysql_dump.sql" | xargs perl -pi -e 's/ROW_FORMAT=FIXED//g'
Wasiq Shahrukh 10/10
1. trabalhou para mim no ubuntu
Joel Davey
@JoelDavey Sim 1 # funciona no Ubuntu. Eu estava me referindo ao MacOS.
MagePsycho
10

Me deparei com o mesmo problema ao tentar importar um dump de banco de dados Magento do MySQL 5.5 para o MySQL 5.7. O problema parece ser a opção de tabela ROW_FORMAT = FIXED em duas tabelas InnoDB. A remoção das duas ocorrências dessa opção do dump do banco de dados permitiu que a importação fosse executada sem erros.

Parece que esta opção é relevante apenas para tabelas MyISAM , pelo menos no MySQL 5.7.

mustdobetter
fonte
1
Pequena adição: está relacionada à configuração innodb_strict_modeque costumava ser desativada por padrão, mas é ativada por padrão a partir do MySQL 5.7.7 (de acordo com a documentação do MySQL).
perfil completo de Jisse Reitsma
8
sed -ie 's/ROW_FORMAT=FIXED//g' magento-db-dump.sql

Trabalhar em várias plataformas (Mac + Linux)

Aurélien
fonte
funcionou perfeitamente no linux mint ....
Andrew Smith
6

Outra opção seria adicionar innodb_strict_mode = offao seu arquivo de configuração do MySQL. Eu deparei com esse erro usando as instalações autônomas magerunque me impediam de editar o arquivo SQL. Não tenho certeza se a desativação do modo estrito do InnoDb é desejável em um ambiente de produção, mas pelo menos funciona em um ambiente de desenvolvimento.

Jisse Reitsma
fonte
1

Essa tabela espera ser InnoDB. Eu verificaria suas configurações do mysql para garantir que você tenha ativado / permitido. Além disso, a sugestão de que você possa ter essa tabela existente é possível. Eu removeria todas as tabelas e tentaria novamente depois de validar que o InnoDB está funcionando.
Apenas saindo da mensagem de erro que você forneceu, eu esperaria que o InnodDB não estivesse pronto ou funcionando na sua instalação atual.

RussellAlbin
fonte
Apenas verifiquei o mysql. está ativado e definido como o mecanismo padrão. Estou importando-o em um novo banco de dados sem tabelas. Vai tentar a solução que @Anna Volkl disse .. Espero que ajude
Woulei