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

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

Теги

 

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

SQL Server 2012 Техническое руководство по обновлению

Ron Talmage, Nigel Sammy, Allan Hirt, Herbert Albert, Antonio Soto, Danilo Dominici, Regis Baccaro, Milos Radivojevic, Jesus Gil, Dejan Sarka, Johan Ahlen, Simran Jindal, Paul Turley, Craig Utley, Larry Barnes, Pablo Ahumada
Это техническое руководство содержит описание процедуры обновления экземпляров SQL Server 2005, SQL Server 2008 и SQL Server 2008 R2 до версии SQL Server 2012.

Теги