Подтвердить что ты не робот

ОШИБКА 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. Как я могу решить эту ошибку?

4b9b3361

Ответ 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

Готово!