Перейти к основному содержанию

Unknown collation: 'utf8mb4_0900_ai_ci'

SQL

При попытке импорта данных в базу 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

sql

Теги

 

Похожие материалы

MSSQL — получить список JOB с помощью SQL запроса

Пример вывода списка заданий JOB с помощью запроса из системных таблиц. Запрос выводит только те задания, которые созданы в Database Maintenance. Если вам нужны все, то уберите "AND [sCAT].[name] = N'Database Maintenance'" из запроса:

Теги

Установка SQL Server Management Tools — SSMS

Для управления SQL сервером понадобится SQL Server Management Tools (SSMS). Приложение SSMS можно установить на тот же сервер, что и SQL Server 2019, однако, иногда удобнее выполнить установку на компьютер системного администратора, DBA или разработчика.

Теги