При попытке импорта данных в базу MySQL или при попытке создания базы из файла SQL можно получить ошибку вида:
ERROR 1273 (HY000) at line 25: Unknown collation: 'utf8mb4_0900_ai_ci'
Проблема касается кодировки.
CHARACTER SET — это кодировка, набор символов. CHARACTER SET может включать в себя различные наборы символов. Различные CHARACTER SET могут включать примерно одинаковые наборы символов но в различном порядке (см. например koi8ru и cp1251). MySQL необходимо знать какой CHARACTER SET будет использован для данных в таблице, чтобы корректно проводить сортировку и индексацию данных.
COLLATION — способ, с помощью которого следует упорядочивать и сравнивать данные в БД. Для одного и того же CHARACTER SET может существовать несколько COLLATION. Например: cp1251_general_ci — сравнение не чувствительное к регистру, cp1251_bin — чувствительное к регистру.
В нашем случае файл SQL был снят с СУБД, которая понимает COLLATION 'utf8mb4_0900_ai_ci', а СУБД, в которую мы загружаем данные — не понимает.
Мы можем заменить в файле SQL COLLATION 'utf8mb4_0900_ai_ci' на какой-то другой, к примеру, на 'utf8mb4_unicode_ci'. Для этого можно исправить SQL файл в текстовом редакторе, например, было:
ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
Стало:
ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
Строк может быть много, поможет автозамена.
Если файл большой, то лучше воспользоваться командой sed:
sed -i 's/utf8mb4_0900_ai_ci/utf8mb4_unicode_ci/g' /path_to_sql/db.sql