Jump to content
View in the app

A better way to browse. Learn more.

IPBMafia.ru - поддержка Invision Community, релизы, темы, плагины и приложения

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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

Featured Replies

Posted

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

Цитата

 

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

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

Запрос сформирует набор запросов для всех таблиц с признаком 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

  • 2 недели спустя...
1 час назад, HooLIGUN сказал:

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

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

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

image.thumb.png.df090a222ad3bd8efb4dccaaf560c5e8.png

  • 2 месяца спустя...

Почти все таблицы в 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'

 

А тут?

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='имя вашей базы'; 

 

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'

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

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.

По

 

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

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

107 335

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

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

image.png.a07179a90ecfbbb6f674d8a00e303a44.png

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

image.png.17c1bfd35f90cb11ca4412c44b9d129e.png

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

image.png.e2aa09b81c3c6f68cdc3f75956f3c150.png

 

 Да ничего другого что тут описано я не делаю. Это мне 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;

 

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

 Warning: #1478 InnoDB: ROW_FORMAT=DYNAMIC requires innodb_file_format > Antelope.
Warning: #1478 InnoDB: assuming ROW_FORMAT=COMPACT.

Edited by macar

  • 2 years later...

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
Ответить в этой теме...

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

  • No registered users viewing this page.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.