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

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 — ошибка при восстановлении лога транзакций

Пытаюсь настроить зеркало, снимаю полный бэкап и бэкап лога. Затем пытаюсь восстановить базу на зеркале. Бэкап bak нормально восстанавливается, а бэкап trn не восстанавливается с ошибкой: The log in this backup set terminates at LSN 26204000001366300001, which is too early to apply to the database. A more recent log backup that includes LSN 26204000001367500001 can be restored.

Теги

MSSQL Server — ошибка The SQL Server license agreement cannot be located for the selected edition

Столкнулся с ошибкой вида: The SQL Server license agreement cannot be located for the selected edition, EVAL. This could be a result of corrupted media or the edition being unsupported by the media.

Теги

Backup and Restore of SQL Server Databases

Microsoft
Бесплатный справочник для администраторов SQL сервера. Описаны преимущества резервного копирования и восстановления. Приведены термины, применяющиеся при резервном копировании и восстановлении. Представлены стратегии резервного копирования и восстановления. Уделено внимание безопасности.

Теги