CREATE TABLE
b_admin_notify ( ID int NOT NULL AUTO_INCREMENT, MODULE_ID varchar(50) DEFAULT NULL, TAG varchar(255) DEFAULT NULL, MESSAGE text, ENABLE_CLOSE char(1) DEFAULT 'Y', PUBLIC_SECTION char(1) NOT NULL DEFAULT 'N', NOTIFY_TYPE char(1) NOT NULL DEFAULT 'M', PRIMARY KEY (ID), KEY IX_AD_TAG (TAG) ) ENGINE=InnoDB AUTO_INCREMENT=29 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; Collation — это набор правил, описывающих, как сортировать и сравнивать строковые значения в базе данных. Этот параметр может варьироваться в зависимости от версии сервера MySQL.
Эта ошибка возникает из-за несовместимости версий MySQL.
Вы пытаетесь импортировать базу данных, созданную в новой версии MySQL (вероятнее всего, MySQL 8.0), на сервер с более старой версией (например, MySQL 5.7 или MariaDB).
Кодировка utf8mb4_0900_ai_ci является стандартной для MySQL 8.0, но старые версии её просто не знают.
Вот как это исправить:
Способ 1: Поиск и замена (Самый простой)
Вам нужно заменить упоминание новой кодировки на более совместимую (например, utf8mb4_unicode_ci или utf8mb4_general_ci) в вашем дамп-файле (файле .sql).
-
Откройте файл с дампом базы данных в любом текстовом редакторе (Notepad++, Sublime Text, VS Code). Обычный Блокнот может зависнуть на больших файлах.
-
Нажмите
Ctrl + F(или "Поиск и замена"). -
Найти:
utf8mb4_0900_ai_ci -
Заменить на:
utf8mb4_unicode_ci -
Сохраните файл и попробуйте импортировать его снова.
Способ 2: Использование командной строки (Для Linux/Mac или больших файлов)
Если файл слишком большой и редактор его не открывает, используйте команду sed в терминале. Она заменит текст внутри файла без его открытия.
Выполните эту команду в папке с вашим .sql файлом:
sed -i 's/utf8mb4_0900_ai_ci/utf8mb4_unicode_ci/g' vash_dump_file.sql
(Замените vash_dump_file.sql на имя вашего файла)
Важное примечание про 1С-Битрикс
Судя по названию таблицы b_admin_notify, вы восстанавливаете сайт на 1С-Битрикс. Для Битрикса кодировка utf8mb4_unicode_ci (или utf8_unicode_ci для старых ядер) является вполне корректной заменой.
Совет: Если после исправления ошибки с collation появится ошибка
Unknown character set: 'utf8mb4', значит ваш сервер MySQL совсем старый (ниже 5.5.3). В таком случае замените вездеutf8mb4наutf8, аutf8mb4_0900_ai_ciнаutf8_general_ci.