MySQL 1273: Unknown collation utf8mb4_0900_ai_ci — как загрузить дамп
Ошибка 1273 появляется, когда дамп из MySQL 8 загружают в MariaDB. В файле указано правило сортировки, которого MariaDB не знает. Замените его в файле и загрузите дамп снова.
Содержание 8
Как выглядит ошибка
ivan@myserver:~$ mysql -u ivan -p base < base.sql
Enter password:
ERROR 1273 (HY000) at line 25: Unknown collation: 'utf8mb4_0900_ai_ci'at line 25 — номер строки в файле дампа, на которой загрузка остановилась. В кавычках — имя правила сортировки, которое база не узнала.
Почему так
Collation — правило, по которому база сравнивает и сортирует текст: различать ли большие и маленькие буквы, как упорядочить буквы с ударениями. В MySQL 8.0 по умолчанию стоит правило utf8mb4_0900_ai_ci, и mysqldump переносит его в дамп вместе с описанием таблиц.
В MariaDB 10.11, которая ставится из пакетов Ubuntu 24.04, такого правила нет. Оно появилось в MariaDB 11.4.5. Поэтому дамп из MySQL 8 не загружается в MariaDB до этой версии — нужно заменить правило в файле на то, которое MariaDB знает: utf8mb4_unicode_ci.
Шаг 1. Сделайте копию файла
Если что-то пойдёт не так, вернётесь к ней. Команды выполняйте в той папке, где лежит файл дампа. Посмотреть файлы в текущей папке можно командой ls.
cp base.sql base-kopiya.sqlШаг 2. Замените правило в файле
На сервере с Ubuntu или в Linux:
sed -i 's/utf8mb4_0900_ai_ci/utf8mb4_unicode_ci/g' base.sqlНа Mac в программе Терминал после -i нужны две одинарные кавычки:
sed -i '' 's/utf8mb4_0900_ai_ci/utf8mb4_unicode_ci/g' base.sqlКоманда ничего не выводит — это нормально. Проверьте, что старых имён не осталось:
grep -c utf8mb4_0900_ai_ci base.sqlОтвет 0 значит, что всё заменено. На Windows команды sed нет: проще загрузить файл на сервер и заменить там или открыть файл в редакторе, который умеет заменять текст во всём файле.
Шаг 3. Загрузите дамп снова
mysql -u ivan -p base < base.sqlВместо ivan подставьте своего пользователя базы, вместо base — имя базы, вместо base.sql — имя своего файла. Команда спросит пароль пользователя базы. Загружать файл заново можно в ту же базу: mysqldump по умолчанию пишет перед каждой таблицей команду удалить её, поэтому таблицы, которые успели загрузиться до ошибки, создадутся заново.
Если теперь загрузка остановилась на ошибке 1227 со словом SUPER, в дампе указан пользователь старого сервера — разбор. Если на ошибке 1153 — разбор.
Если загружаете через панель хостинга
Замените правило в файле на своём компьютере, как в шаге 2, и загрузите исправленный файл в панели снова.
Тексты ошибок и настройки сверены с исходным кодом MySQL 8.0.46 и MariaDB 10.11.14 — эти версии ставятся из пакетов Ubuntu 24.04. В других версиях строки могут немного отличаться.
Источники
- Исходный код MySQL 8.0.46: character_sets.cmake — правило utf8mb4_0900_ai_ci по умолчанию в MySQL 8.0.
- Исходный код MariaDB 10.11.14: ctype-uca.c — правила сортировки, которые знает MariaDB 10.11.
- Исходный код MySQL 8.0.46: mysqldump.cc — дамп удаляет таблицу перед тем, как создать её.
- Исходный код MySQL 8.0.46: mysql.cc — как программа mysql выводит ошибку и номер строки файла.
- Исходный код MySQL 8.0.46: messages_to_clients.txt — тексты ошибок сервера MySQL.
Сверено 10 октября 2026 года.
Что почитать дальше
Проверено и обновлено: 10.10.2026