Jump to content

Массовое изменение формата строк из Compact в Dynamic


grant24

Recommended Posts

Есть пожелание от установщика:

Цитата

 

  • У вас есть одна или несколько таблиц InnoDB, которые используют строковый формат Compact. Это может ограничить объем данных, которые могут храниться в таблице. Мы рекомендуем изменить его на «Динамический». Если вы не знаете, как это сделать, обратитесь за помощью к своему хостинг-провайдеру или системному администратору.

Менять через heidisql по одной долго а запроса не знаю. Есть методы?

Link to comment
Share on other sites

Запрос сформирует набор запросов для всех таблиц с признаком Compact

SELECT CONCAT('ALTER TABLE ', SUBSTRING_INDEX(NAME,'/',-1), ' ROW_FORMAT=DYNAMIC;')
FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES
WHERE ROW_FORMAT='Compact';

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

ALTER TABLE ibf_members ROW_FORMAT=DYNAMIC;
ALTER TABLE ibf_sessions ROW_FORMAT=DYNAMIC;
ALTER TABLE ibf_forsex ROW_FORMAT=DYNAMIC;

Предварительно надо проверить наличие этих глобальных настроек (в файле конфигурации mysql) и добавить их, если отсутствуют.

innodb_file_format=Barracuda;
innodb_file_per_table=1;
innodb_large_prefix=1;

и рестартануть mysql сервер

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

Цитата

обратитесь за помощью к своему хостинг-провайдеру или системному администратору.

 

Edited by Desti
Link to comment
Share on other sites

  • 2 weeks later...

Desti , тоже с этим столкнулся, ваш метод выводит совсем не то, что нужно

Переменные выставил

У меня почему то все таблицы в Compact

изображение_2020-11-06_163753.png

Link to comment
Share on other sites

1 час назад, HooLIGUN сказал:

У меня почему то все таблицы в Compact

Судя по пустому результату у вас нет таблиц Compact. 

У меня одна табличка в компакте, старая какая-то, всё видно.

image.thumb.png.df090a222ad3bd8efb4dccaaf560c5e8.png

Link to comment
Share on other sites

Ну так же не бывает :) 

Там есть еще одна таблица, `INNODB_SYS_TABLESPACES` - в ней тоже формат обозначен, правда в другом виде, 'Compact or Redundant'. 

Link to comment
Share on other sites

  • 2 months later...

Почти все таблицы в Compact, на  запрос у меня ошибка:

Цитата

SELECT CONCAT('ALTER TABLE ', SUBSTRING_INDEX(NAME,'/',-1), ' ROW_FORMAT=DYNAMIC;')
FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES
WHERE ROW_FORMAT='Compact';

----

Цитата

Ошибка

SQL запрос: https://macauto.ru/ut/mymac/themes/dot.gif

SELECT CONCAT('ALTER TABLE ', SUBSTRING_INDEX(NAME,'/',-1), ' ROW_FORMAT=DYNAMIC;')

FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES

WHERE ROW_FORMAT='Compact' LIMIT 0, 25

Ответ MySQL: https://macauto.ru/ut/mymac/themes/dot.gif

#1054 - Неизвестный столбец 'ROW_FORMAT' в 'where clause'

 

Link to comment
Share on other sites

А тут?

SHOW COLUMNS FROM `information_schema`.`TABLES` where TABLE_SCHEMA='имя вашей базы'; 

Если есть колонка ROW_FORMAT, то сделайте так

SELECT CONCAT('ALTER TABLE ', SUBSTRING_INDEX(TABLE_NAME,'/',-1), ' ROW_FORMAT=DYNAMIC;')
FROM INFORMATION_SCHEMA.TABLES
WHERE ROW_FORMAT='Compact' and TABLE_SCHEMA='имя вашей базы'; 

 

Link to comment
Share on other sites

5.5.68-MariaDB .

При выполнении запроса:

SHOW COLUMNS FROM `information_schema`.`TABLES` where TABLE_SCHEMA='forum'; 

Ошибка

SQL запрос:

SHOW COLUMNS FROM `information_schema`.`TABLES` where TABLE_SCHEMA='forum'

Ответ MySQL: https://macauto.ru/ut/mymac/themes/dot.gif

#1054 - Неизвестный столбец 'TABLE_SCHEMA' в 'where clause'

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

Link to comment
Share on other sites

9 часов назад, Desti сказал:

SELECT CONCAT('ALTER TABLE ', SUBSTRING_INDEX(TABLE_NAME,'/',-1), ' ROW_FORMAT=DYNAMIC;')
FROM INFORMATION_SCHEMA.TABLES
WHERE ROW_FORMAT='Compact' and TABLE_SCHEMA='имя вашей базы'; 

Этот запрос прошел, вывел запрос для всех  кроме трех, те что с FULLINDEX и в MyISAM.

По

 

Link to comment
Share on other sites

2 часа назад, macar сказал:

SHOW COLUMNS FROM `information_schema`.`TABLES` where TABLE_SCHEMA='forum'; 

На машкеДБ это почему-то не работает. У меня percona.

Link to comment
Share on other sites

Попробовал конвертировать одну таблицу, вот что получилось, так и должно быть?

Статистика строки
Формат Compact
Параметры row_format=DYNAMIC
Сравнение utf8_unicode_ci
Следующий автоматический индекс

107 335

Link to comment
Share on other sites

Я не знаю, что вы делаете. Вот как это выглядит у меня:

Исходное состояние, таблица ibf_banner в формате Compact

image.png.a07179a90ecfbbb6f674d8a00e303a44.png

Проверяем запросом, меняем, снова проверяем.

image.png.17c1bfd35f90cb11ca4412c44b9d129e.png

Снова смотрим в сводную таблицу

image.png.e2aa09b81c3c6f68cdc3f75956f3c150.png

 

Link to comment
Share on other sites

 Да ничего другого что тут описано я не делаю. Это мне phpmyadmin так показывает, сделал экспорт структуры таблицы которую конвертировал,  вроде нормально.

CREATE TABLE `ibf_autowelcome_members` (
  `welcome_member_id` bigint(20) UNSIGNED NOT NULL COMMENT 'ID Number',
  `welcome_sent` tinyint(4) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ROW_FORMAT=DYNAMIC;

 

Link to comment
Share on other sites

 Кстати , MarioDB требует формат файлов не Барракуда а Antelope

 Warning: #1478 InnoDB: ROW_FORMAT=DYNAMIC requires innodb_file_format > Antelope.
Warning: #1478 InnoDB: assuming ROW_FORMAT=COMPACT.
Edited by macar
Link to comment
Share on other sites

  • 2 years later...

Здравствуйте, подскажите есть уже готовое решение с этой проблемой, у меня такая же проблема сейчас, спасибо

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Ваша ссылка была автоматически строена.   Отображать как обычную ссылку

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...