ОШИБКА 1115 (42000): Неизвестный набор символов: 'utf8mb4'
У меня есть дамп MySQL, который я пытался восстановить с помощью:
mysql -u"username" -p"password" --host="127.0.0.1" mysql_db < mysql_db
Однако это породило ошибку:
ERROR 1115 (42000) at line 3231: Unknown character set: 'utf8mb4'
Это строки 3231-3233:
/*!50003 SET character_set_client = utf8mb4 */ ;
/*!50003 SET character_set_results = utf8mb4 */ ;
/*!50003 SET collation_connection = utf8mb4_general_ci */ ;
Я использую MySQL 5.1.69. Как я могу решить эту ошибку?
Ответы
Ответ 1
Ваша версия не поддерживает этот набор символов, я считаю, что это был 5.5.3
, который представил его. Вы должны обновить mysql до версии, используемой для экспорта этого файла.
Ошибка тогда довольно ясна: вы устанавливаете определенный набор символов в свой код, но ваша версия mysql не поддерживает его и, следовательно, не знает об этом.
Согласно https://dev.mysql.com/doc/refman/5.5/en/charset-unicode-utf8mb4.html:
utf8mb4 - это надмножество utf8
так что, возможно, есть шанс, что вы можете просто сделать это utf8, закрыть глаза и надежду, но это будет зависеть от ваших данных, и я бы не рекомендовал его.
Ответ 2
Вы можете попробовать:
Откройте файл sql в текстовом редакторе, найдите и замените все
utf8mb4 to utf8
Импортировать снова.
Ответ 3
Это может помочь:
mysqldump --compatible=mysql40 -u user -p DB > dumpfile.sql
PHPMyAdmin имеет тот же режим совместимости MySQL в параметрах экспорта "эксперт". Хотя это порой ничего не делало.
Если у вас нет доступа через командную строку или через PHPMyAdmin, отредактируйте
/*!50003 SET character_set_client = utf8mb4 */ ;
чтобы читать только 'utf8'
, это путь.
Ответ 4
Просто откройте свой sql файл с помощью текстового редактора и найдите "utf8mb4" и замените на utf8.I надеюсь, что это сработает для вас.
Ответ 5
Ваш MySQL устарел.
Самый простой способ исправить: запустить эту командную строку через SSH.
yum -y update
Перезапустите службу MySQL или лучше перезагрузите свой VPS.
Ответ 6
Я отвечаю на вопрос - поскольку я не нашел ни одного из них полным. В настоящее время Неизвестный набор символов: 'utf8mb4' довольно распространен, так как у множества развертываний MySQL меньше 5.5.3 (версия, в которой был добавлен utf8mb4).
В этой ошибке явно указано, что на вашем сервере db нет utf8mb4
.
Причина: возможно, у вас есть MySQL
версия 5.5.3 или новее, а на этапе/размещенном VPS у вас есть версия сервера MySQL менее 5.5.3
Наборы символов utf8mb4
были добавлены в MySQL 5.5.3.
utf8mb4
был добавлен из-за ошибки в наборе символов MySQL utf8
. Обработка MySQL набора символов utf8 допускает максимум 3 байтов для одного кода, что недостаточно для представления всего Юникод (Максимальный код = 0x10FFFF
). Потому что они не хотел потенциально ломать любые вещи, которые полагались на эту багги поведение, utf8mb4
. Документация здесь.
От Ответ SO:
Проверка:
Чтобы проверить, что вы можете проверить текущий набор символов и сортировку для базы данных, с которой вы импортируете дамп, - Как узнать, какой символ задает база данных MySQL/таблица/столбец?
Решение 1: просто обновите свой сервер MySQL до 5.5.3 (по крайней мере) - в следующий раз будьте в курсе той версии, которую вы используете локально, для этапа и для prod, все должны иметь быть одинаковым. Предложение - в настоящее время набор символов по умолчанию должен быть utf8mb4.
Решение 2 (не рекомендуется): Преобразовать текущий набор символов в utf8, а затем экспортировать данные - он будет загружаться нормально.
Ответ 7
возможно, целая база данных + таблицы + поля должны иметь одинаковый набор символов!!
то есть.
CREATE TABLE `politicas` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`Nombre` varchar(250) CHARACTER SET utf8 NOT NULL,
-------------------------------------^here!!!!!!!!!!!
PRIMARY KEY (`ID`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
-------------------------------------------------^here!!!!!!!!!
Ответ 8
Откройте файл MySQL любым инструментом редактирования
находить
/*! 40101 SET NAMES utf8mb4 */;
менять
/*! 40101 SET NAMES utf8 */;
Сохраните и загрузите ваш mysql.
Ответ 9
Как некоторые предлагали здесь, замена utf8mb4
на utf8
поможет вам решить проблему. ИМХО, я использовал sed
, чтобы найти и заменить их, чтобы избежать потери данных. Кроме того, открытие большого файла в любом графическом редакторе - потенциальная боль. Мои данные MySQL растут на 2 ГБ. Конечная команда -
sed 's/utf8mb4_unicode_520_ci/utf8_unicode_ci/g' original-mysql-data.sql > updated-mysql-data.sql
sed 's/utf8mb4/utf8/g' original-mysql-data.sql > updated-mysql-data.sql
Готово!