Ошибка «ERROR 1031 (HY000) at line 4284: Table storage engine for ‘TABLE’ doesn’t have this option»

Ошибка «ERROR 1031 (HY000) at line 4284: Table storage engine for ‘TABLE’ doesn’t have this option»

При обновлении базы данных, получил ошибку:

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

Поискав в инете, нашел решение, и я в своей статье расскажу что делать в такой ситуации чтобы исправить данную ошибку.

Исправление «ERROR 1031 (HY000) at line 4284: Table storage engine for ‘catalog_product_relation’ doesn’t have this option».

Проверяем, есть ли в дампе следующие строки:

[root@kievdev01 kassatex]# cat /home/linux-notes.org/dump.sql| grep "ROW_FORMAT"
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Catalog Product Relation Table';
) ENGINE=InnoDB AUTO_INCREMENT=2548 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Catalog Product Super Attribute Label Table';
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Catalog Product To Website Linkage Table';
) ENGINE=InnoDB AUTO_INCREMENT=3654 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Customer Address Entity';
) ENGINE=InnoDB AUTO_INCREMENT=4101 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Customer Entity';
) ENGINE=InnoDB AUTO_INCREMENT=5382 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;
) ENGINE=InnoDB AUTO_INCREMENT=112629 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;
) ENGINE=InnoDB AUTO_INCREMENT=446 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Wishlist main Table';
[root@kievdev01 kassatex]#

Я вижу что имею несколько строк с ROW_FORMAT=DYNAMIC и по этому, их нужно изменить на ROW_FORMAT=FIXED. Самый простой способ сделать это — использовать sed:

# sed -ie 's/ROW_FORMAT=FIXED//g' /home/linux-notes.org/dump.sql

После чего, можно снова выполнять команду mysql и вливать дамп:

# mysql linux-notes_db < /home/linux-notes.org/dump.sql

У меня все влилось без единых ошибок.

2 thoughts on “Ошибка «ERROR 1031 (HY000) at line 4284: Table storage engine for ‘TABLE’ doesn’t have this option»

  1. «несколько строк с ROW_FORMAT=DYNAMIC и по этому, их нужно изменить на ROW_FORMAT=FIXED» не соответствует «’s/ROW_FORMAT=FIXED//g’».
    Да и интересно не только лекарство, но и причина возникновения ошибки.

    • MySQL определяет формат строки таблицы как фиксированный или динамический (fixed или dynamic) в зависимости от типа данных столбца. Если таблица имеет тип данных столбца переменной длины, такие как TEXT или VARCHAR, формат строки является FIXED; в противном случае, он DYNAMIC. Строка из INT занимает фиксированные 4 байта, поэтому она FIXED. Строка из VARCHAR(20) занимает от 1 до 61 байта (utf8), поэтому она DYNAMIC.Можно заставить MySQL считать строки фиксированной длины (и тогда VARCHAR(20) будет занимать 61 байт).

      А нужно менять значения, возможно из-за несоответствий версий самого MYSQL (возможно с настройками).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.