Как исправить ошибку mysql 1031 - Механизм хранения таблиц для 'catalog_product_relation' не имеет этой опции?

30

Я пытаюсь сделать новую версию нашего магазина Magento. Я сделал чистую установку El Capitan и запустил apache с PHP, Mysql (версия 5.7.10) и т. Д. Я также запустил phpmyadmin и создал базу данных для Magento. Однако, когда я пытаюсь импортировать резервную копию с нашего рабочего сайта, я получаю сообщение об ошибке:

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

Я попытался импортировать файл .sql через Терминал с помощью команды:

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

Я потерян здесь. Google некоторое время ушел, но не смог найти решение. Я использую тот же двигатель, что и в производственной базе данных.

У кого-нибудь есть идеи?

Woulei
источник
Как вы создали экспорт? Вы проверили свою локальную базу данных, если какие-либо таблицы уже созданы (после многократного тестирования)? Если это так, удалите все эти таблицы перед запуском нового импорта.
Анна Фёлькл
1
В противном случае: Может быть, что-то вроде этого: stackoverflow.com/a/32083169/865443
Анна Фёлькл

Ответы:

49

Недавно у меня была такая же проблема с импортом.

ПРОБЛЕМА

Вероятно, это связано с параметром таблицы, который есть в вашем CREATE TABLE DDL: ROW_FORMAT=FIXED

Давайте проверим, есть ли такая строка в дампе SQL (например: magento-db-dump.sql).

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

Что привело к

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

РЕШЕНИЕ

Удаление ROW_FORMAT=FIXEDопции из CREATE TABLE DDL решит проблему. Итак, давайте попробуем возможные решения.

# 1

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

Это не сработало для меня в MacOSx, что привело к следующей ошибке:

sed: 1: «magento-db-dump.sql»: неверный код команды m

# 2

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

И даже это закончилось так:

sed: RE ошибка: недопустимая последовательность байтов

# 3 Но этот сработал для меня в MacOSx

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

( источник )

MagePsycho
источник
Для меня сработала следующая команда:find -name "mysql_dump.sql" | xargs perl -pi -e 's/ROW_FORMAT=FIXED//g'
Васик Шахрух
1. работал для меня на Ubuntu
Джоэл Дэйви
@JoelDavey Да 1 # работает в Ubuntu. Я имел в виду MacOS.
МагПсихо
10

Я столкнулся с той же проблемой при попытке импортировать дамп базы данных Magento из MySQL 5.5 в MySQL 5.7. Кажется, проблема заключается в параметре таблицы ROW_FORMAT = FIXED для двух таблиц InnoDB. Удаление двух вхождений этого параметра из дампа базы данных позволило выполнить импорт без ошибок.

Кажется, эта опция относится только к таблицам MyISAM , по крайней мере, в MySQL 5.7.

mustdobetter
источник
1
Небольшое дополнение: это связано с настройкой, innodb_strict_modeкоторая по умолчанию отключена, но включена по умолчанию, начиная с MySQL 5.7.7 (согласно документации MySQL).
Джисс Рейтсма
8
sed -ie 's/ROW_FORMAT=FIXED//g' magento-db-dump.sql

Работа кроссплатформенная (Mac + Linux)

Орельен
источник
отлично работал на Linux Mint ....
Эндрю Смит
6

Другой вариант - добавить innodb_strict_mode = offв ваш файл конфигурации MySQL. Я столкнулся с этой ошибкой, используя автоматические установкиmagerun которые не позволяли мне редактировать файл SQL. Я не уверен, что отключение строгого режима InnoDb желательно в производственной среде, но, по крайней мере, оно работает в среде разработки.

Джисс Рейтсма
источник
1

Ожидается, что эта таблица будет InnoDB. Я бы проверил ваши настройки mysql, чтобы убедиться, что это включено / разрешено. Также возможно, что у вас есть эта таблица. Я удалил бы все таблицы и попробовал бы это снова после того, как вы проверите, что InnoDB работает.
Просто отключив предоставленное вами сообщение об ошибке, я ожидаю, что InnodDB не готов или не работает с вашей текущей установкой.

RussellAlbin
источник
Только что проверил mysql. он включен и установлен как движок по умолчанию. Я импортирую его в совершенно новую базу данных без таблиц. Попробуем решение, которое @Anna Völkl сказала .. Надеюсь, это поможет
Woulei