Перейти к содержанию

Исправляем "You have one or more InnoDB tables that are using the `Compact` row format." в IPS 4.5.4


Рекомендуемые сообщения

  • Администратор

При очередной проверке системы, админка нашего сайта стала выдавать следующую рекомендацию:

Цитата

You have one or more InnoDB tables that are using the `Compact` row format. This may limit the amount of data that can be stored within the table. We recommend changing it to 'Dynamic'. If you are not sure how to do this, you should contact your hosting provider or system administrator for assistance.

А в уведомлениях администратора стал появляться следующий виджет:

Цитата

Ваш сервер не соответствует нашим требованиям. Это может стать причиной невозможности обновиться на будущие версии Invision Community.

You have one or more InnoDB tables that are using the `Compact` row format. This may limit the amount of data that can be stored within the table. We recommend changing it to 'Dynamic'. If you are not sure how to do this, you should contact your hosting provider or system administrator for assistance.


Вам следует связаться с вашим хостинг-провайдером или системным администратором и попросить его решить эти проблемы.

Давайте попробуем исправить эту проблему, что бы в потенциальных будущих обновлениях движка, у нас не возникло непредвиденных проблем.

Для начала, по традиции делаем резервную копию, компиляция нашего архива занимает около двух с половиной минут. А пока делается резервная копия, хочу так же сказать, что у нас каждый день так же делается автоматическая резервная копия, которая сохраняется на Google диск, и эти копии я ни разу не использовал. Я просто привык, что при каждом, "Фатальном", действии, я резервные копии делаю вручную. Это так, заметки админа.

После того, как мы сделали резервную копию, идем в базу данных форума. В базе данных надо открыть вкладку SQL, где мы пропишем следующее:

ALTER TABLE ТАБЛИЦА engine=MyISAM;

Каждую таблицу с новой строки, у меня было 198 таблиц, и это заняло время, но я это сделал и успешно конвертировал все таблицы InnoDB в MyISAM.

В большей части таблиц строковый формат сразу стал Dynamic, в какой то части таблиц этот формат стал в значение Fixed, пока проигнорируем это.

Теперь было бы хорошо указать базе то, что в будущем ей надо сразу создавать таблицы в типе MyISAM, соответственно для этого надо выполнить следующий SQL запрос:

set global storage_engine=MYISAM

Но к сожалению, у меня нет таких привилегий.

Теперь идем в админку форума, чистим кеш и выполняем проверку системы. И как не странно, я вообще не понимал что я делаю, потому что сами знаете, я рукожоп, но это сработало! Проверка системы успешно пройдена.

Пока все, тема открыта, если будет что то связанное с этим, я обязательно дополню тему, ну и вы не стесняйтесь рассказать о том, что хотите рассказать.

Спокойной ночи...

Ссылка на комментарий
Поделиться на другие сайты
  • Администратор
В 25.12.2020 в 01:58, Ryancoolround сказал:

Теперь было бы хорошо указать базе то, что в будущем ей надо сразу создавать таблицы в типе MyISAM, соответственно для этого надо выполнить следующий SQL запрос:

set global storage_engine=MYISAM

Но к сожалению, у меня нет таких привилегий.

Абзац, реально очень важный. Потому что, со мной произошла следующая ситуация. Ну я подключил Discord к сайту, простыми словами, и соответственно в базе создались новые таблицы. А так как, эту настройку сделать из за привилегий не удалось, то таблицы снова создались не в том формате. И соответственно админка сайта снова пишет:

Цитата

You have one or more InnoDB tables that are using the `Compact` row format. This may limit the amount of data that can be stored within the table. We recommend changing it to 'Dynamic'. If you are not sure how to do this, you should contact your hosting provider or system administrator for assistance.

Так что у меня теперь настройка приложений сложнее, и больше действий приходится делать. Теперь мне приходится не только из маркета скачивать приложение, но при этом мне нужно еще и убедится, в каком формате создались таблицы. Ужас.

Так что, буду править. Сначала правда резервную копию сделаю.

Ссылка на комментарий
Поделиться на другие сайты
  • 1 месяц спустя...
  • 1 месяц спустя...
  • Администратор

Наконец то были переведены последние 10 таблиц. В коем то веке я уверен, что больше не придется переводить новые таблицы. Что же, спокойной ночи.

Ссылка на комментарий
Поделиться на другие сайты
  • 2 недели спустя...
  • 2 недели спустя...
  • 6 месяцев спустя...
  • Администратор

Сегодня я научился массово конвертировать таблицы, и сейчас расскажу вам как это сделать. Мы будем переводить таблицы из MyISAM в InnoDB.

Для начала нам понадобится следующий запрос (Источник):

SET @DATABASE_NAME = 'НАЗВАНИЕ_ВАШЕЙ_БАЗЫ_ДАННЫХ';

SELECT  CONCAT('ALTER TABLE `', table_name, '` ENGINE=InnoDB;') AS sql_statements
FROM    information_schema.tables AS tb
WHERE   table_schema = @DATABASE_NAME
AND     `ENGINE` = 'MyISAM'
AND     `TABLE_TYPE` = 'BASE TABLE'
ORDER BY table_name DESC;

Затем в phpMyAdmin нужно открыть вашу базу данных и перейти в раздел SQL

Запрос, который я указал выше вставляем в консоль. Не забываем изменить название базы данных.

Нажимаем кнопку Вперед. Параметры отображения строк кстати рекомендую поставить следующие. Галочка на "Показать Все", и чекпойнт на "Полные Тексты".

И в конечном итоге мы получаем всю таблицу необходимых запросов. Копируем ее (Не копируйте таблицу с примера, она может отличаться от вашей), и выполняем SQL запрос, который конвертирует все таблицы.

ALTER TABLE `table_2` ENGINE=InnoDB;
ALTER TABLE `table_3` ENGINE=InnoDB;
ALTER TABLE `table_4` ENGINE=InnoDB;
ALTER TABLE `table_5` ENGINE=InnoDB;
ALTER TABLE `table_6` ENGINE=InnoDB;

 

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...