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

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


Ryancoolround

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

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

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

Цитата

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 месяц спустя...
  • Администратор

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

Получай фашист по морде!

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

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

Наконец то были переведены последние 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;

 

Получай фашист по морде!

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

  • 1 год спустя...
В 13.10.2021 в 00:49, Ryancoolround сказал:

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

 

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

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

  • 2 недели спустя...
  • Администратор
В 09.05.2023 в 10:14, SN@IPER сказал:

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

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

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

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

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

Так что не бойтесь работать с базами данных, просто будьте аккуратны и не забывайте про безопасность.

Получай фашист по морде!

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

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

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

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

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

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

Войти

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

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

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