Сторінки, статті та новини
Інструменти та плагіни
Заготовка заголовок


Опис як приклад заготовки. Приклад текстового контенту для подальшої кастомізації шаблону "Index36".

Редагувати шаблон можна на власний розсуд. Якщо у вас немає часу або знань – завжди можна замовити адаптацію шаблону, написавши мені через GitHub або особисті повідомлення на публічній сторінці маркетплейсу цифрових товарів.

29.08.2025 19:24

Эта инструкция — о том, как безопасно конвертировать таблицы базы данных Cotonti в современную кодировку utf8mb4_unicode_ci и при необходимости перевести их на движок InnoDB.


Для чего она нужна

  1. Обновление кодировки таблиц:
    • Старые базы Cotonti часто используют utf8mb3 (alias utf8 в MySQL), которая не поддерживает полные 4-байтовые символы, такие как эмодзи.
    • Конвертация в utf8mb4_unicode_ci решает проблемы с символами и улучшает совместимость.
  2. Обновление движка таблиц (Инструкция B):
    • InnoDB современный и поддерживает транзакции, внешние ключи, лучше масштабируется.
    • MyISAM устарел и ограничен в функционале.

Когда использовать эту инструкцию

  • Перед обновлением Cotonti или модулей, которые используют новые функции или символы (например, emoji).
  • Если на сайте появляются ошибки с вставкой символов (например, «Incorrect string value»).
  • При переносе базы на новый сервер MySQL с поддержкой utf8mb4.
  • При желании привести всю базу к одинаковой кодировке и движку для удобства поддержки и бэкапов.

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

 

Инструкция A — Конвертируем только таблицы с utf8mb3_unicode_ciutf8mb4_unicode_ci

Шаг 0 — Резервная копия

  1. В phpMyAdmin выбери базу YOUR_DB_NAME.
  2. Перейди во вкладку Export / Экспорт → режим Quick / Быстрый → формат SQL → нажми Go.
  3. Сохрани дамп на компьютер.

Шаг 1 — Определяем таблицы с utf8mb3_unicode_ci

  1. В phpMyAdmin выбери базу YOUR_DB_NAME.
  2. Перейди во вкладку SQL.
  3. Вставь запрос:
SELECT TABLE_NAME, TABLE_COLLATION

FROM information_schema.TABLES

WHERE TABLE_SCHEMA = 'YOUR_DB_NAME'

AND TABLE_COLLATION = 'utf8mb3_unicode_ci'

ORDER BY TABLE_NAME;
 
 

Если доступ к information_schema закрыт, смотри колонку Collation в списке таблиц.

Шаг 2 — Генерация SQL для конвертации

Для каждой таблицы с кодировкой utf8mb3_unicode_ci используйте шаблон:

 
ALTER TABLE `PREFIX_cot_auth` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE `PREFIX_cot_users` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE `PREFIX_cot_com` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE `PREFIX_cot_pages` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE `PREFIX_cot_forum_posts` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE `PREFIX_cot_forum_topics` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
 
 

Вставляйте только те таблицы, которые реально имеют utf8mb3_unicode_ci.

Шаг 3 — Выполнение SQL

  1. phpMyAdmin → база YOUR_DB_NAME → вкладка SQL.
  2. Вставьте подготовленные ALTER TABLE команды и нажмите Go.

Шаг 4 — Проверка

 
SELECT TABLE_NAME, TABLE_COLLATION
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'YOUR_DB_NAME'
AND TABLE_COLLATION LIKE 'utf8mb4_%';
 
 

Все выбранные таблицы должны иметь utf8mb4_unicode_ci.


Инструкция B — Конвертируем всю базу Cotonti в utf8mb4_unicode_ci и переводим таблицы в InnoDB

Шаг 0 — Резервная копия

То же, что и в Инструкции A.

Шаг 1 — Установка кодировки базы (опционально)

  1. phpMyAdmin → база YOUR_DB_NAME → вкладка Operations / Операции.
  2. В блоке Collation выберите utf8mb4_unicode_ci.
  3. Нажмите Go.

Если доступ закрыт, этот шаг можно пропустить.

Шаг 2 — Генерация SQL для всех таблиц

В phpMyAdmin → SQL:

 
SELECT CONCAT(

'ALTER TABLE `', TABLE_NAME,

'` ENGINE=InnoDB, CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;'

) AS sql_stmt

FROM information_schema.TABLES

WHERE TABLE_SCHEMA = 'YOUR_DB_NAME'

ORDER BY TABLE_NAME;
 
 

Это вернёт готовый список ALTER TABLE для всех таблиц.

Шаг 3 — Выполнение всех ALTER

  1. phpMyAdmin → база YOUR_DB_NAME → SQL.
  2. Вставьте результат шага 2. Пример для стандартных таблиц Cotonti:
 
SET FOREIGN_KEY_CHECKS = 0;

ALTER TABLE `PREFIX_cot_auth` ENGINE=InnoDB, CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE `PREFIX_cot_users` ENGINE=InnoDB, CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE `PREFIX_cot_com` ENGINE=InnoDB, CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE `PREFIX_cot_pages` ENGINE=InnoDB, CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE `PREFIX_cot_forum_posts` ENGINE=InnoDB, CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE `PREFIX_cot_forum_topics` ENGINE=InnoDB, CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE `PREFIX_cot_forum_stats` ENGINE=InnoDB, CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE `PREFIX_cot_groups` ENGINE=InnoDB, CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE `PREFIX_cot_groups_users` ENGINE=InnoDB, CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE `PREFIX_cot_online` ENGINE=InnoDB, CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE `PREFIX_cot_logger` ENGINE=InnoDB, CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE `PREFIX_cot_config` ENGINE=InnoDB, CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE `PREFIX_cot_structure` ENGINE=InnoDB, CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE `PREFIX_cot_extrafields` ENGINE=InnoDB, CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE `PREFIX_cot_cache` ENGINE=InnoDB, CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE `PREFIX_cot_cache_bindings` ENGINE=InnoDB, CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

SET FOREIGN_KEY_CHECKS = 1;

Добавьте остальные таблицы Cotonti в том же формате.

Шаг 4 — Проверка

 
SELECT TABLE_NAME, ENGINE, TABLE_COLLATION
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'YOUR_DB_NAME';
 
 

Убедитесь, что ENGINE = InnoDB и TABLE_COLLATION = utf8mb4_unicode_ci для всех таблиц.

Відредаговано: webitproff (29.08.2025 20:55, 9 місяців тому)
Обліковий запис