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

Исправляем "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

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

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

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

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

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

Опубликовано

Сколько незнакомых слов 😁

Опубликовано

Какие-то китайские иероглифы 

Опубликовано
  • Автор
  • Администраторы

Абзац, реально очень важный. Потому что, со мной произошла следующая ситуация. Ну я подключил 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.

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

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

Сконвертировал еще три таблицы в базе данных.

Видео инструкция на тему конвертирования таблиц в динамические.

Я перевел еще пару таблиц в этот формат. А конкретно 5 таблиц.

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

Таблицы для друзей тоже перевел в этот формат.

Таблицы связанные с блогами тоже сконвертированы.

Сегодня я научился массово конвертировать таблицы, и сейчас расскажу вам как это сделать. Мы будем переводить таблицы из 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;
  • 9 месяцев спустя...
  • 2 года спустя...
Опубликовано
  • Автор
  • Администраторы

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

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

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

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

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

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

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

Последние посетители 0

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