Введение
Сравнение — это набор правил, определяющих, как сравнивать и классифицировать строки на сервере базы данных. В этом руководстве мы обсуждаем ошибку, возникшую при восстановлении базы данных на другом сервере.
Давайте посмотрим на проблему и решение проблемы, с которой столкнулся недавно:
Проблемы
При переносе веб-приложения я получил следующую ошибку при восстановлении базы данных на другом сервере. Идентификация сопоставления может варьироваться в зависимости от версии MySQL.
Сообщение об ошибке:
Error 1273 (HY000) at line 25 Unknown collation: 'utf8mb4_0900_ai_ci'
Отвечать
Проведя небольшое исследование, я обнаружил, что сервер MySQL, работающий на целевом сервере, имеет более старую версию, чем исходный. Итак, мы получили, что на целевом сервере нет необходимой сортировки базы данных.
Итак, давайте внесем небольшое изменение в файл резервной копии, чтобы решить эту проблему. Отредактируйте файл резервной копии базы данных в текстовом редакторе и замените « utf8mb4_0900_ai_ci » на « utf8mb4_general_ci » и « CHARSET=utf8mb4 » на « CHARSET=utf8 ».
Замените строку ниже:
ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
с:
ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;
Сохраните файл и восстановите базу данных.
Пользователи системы Linux могут использовать команду sed для непосредственной замены текста в файлах.
sed -i 's/utf8mb4_0900_ai_ci/utf8_general_ci/g' backup.sql
sed -i 's/CHARSET=utf8mb4/CHARSET=utf8/g' backup.sql
База данных успешно восстановлена.
Заключение
Я надеюсь, что это решение помогло вам решить проблему « Неизвестная коллекция: 'utf8mb4_0900_ai_ci' ».