Экспорт базы данных phpMyAdmin

Я использую мамп 3.4. У меня есть небольшая база данных с 3 таблицами. Когда я загружаю файл базы данных на сервер, у меня возникает эта ошибка: # 1115 - Неизвестный набор символов: «utf8mb4»

Я вернулся в MAMP и проверил: Операции > Сопоставление > utf8_unicode_ci У меня есть это в каждой таблице и в общей базе данных.

Чтобы экспортировать, я выбираю базу данных> Экспорт> Пользовательский> Сохранить вывод в файл. В остальном оставляю по умолчанию.

В чем проблема? что это за мб4? utf8_unicode_ci правильный? Как экспортировать из MAMP и импортировать на свой сервер?


person Nrc    schedule 07.10.2015    source источник
comment
Можно ли вручную отредактировать файл дампа и изменить набор символов?   -  person user2182349    schedule 07.10.2015
comment
user2182349: В Mamp, когда я экспортирую, у меня есть опция Quick. Они дают мне вариант кода. Я вижу там ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; Это то, что вы имели ввиду?   -  person Nrc    schedule 07.10.2015
comment
Найдите файл дампа для utf8mb4.   -  person user2182349    schedule 07.10.2015
comment
что такое доп. файла резервной копии это .sql или что-то еще.   -  person Zafar Malik    schedule 07.10.2015
comment
utf8mb4. Я попробовал это, прежде чем спрашивать. utf8mb4 не найден   -  person Nrc    schedule 07.10.2015
comment
Зафар: имя файла, который я экспортирую, — myDatabase.sql.   -  person Nrc    schedule 07.10.2015


Ответы (1)


Давайте проясним одну вещь: набор символов — это не то же самое, что сопоставление. Эти два понятия только тесно связаны.

Наборы символов сообщают программам, обрабатывающим текст, как интерпретировать поток байтов, составляющих текст, и какой символ отображать на экране.

Сопоставления сообщают программам, обрабатывающим текст, как упорядочивать символы для целей сравнения и сортировки. Таким образом, если вы упорядочиваете текстовое поле в РСУБД, то РСУБД может определить порядок записей с помощью сортировки.

utf8mb4 — это набор символов, который использует MySql. Реализация MySql utf8 может представлять символ размером до 3 байтов, а utf8mb4 может представлять символы размером до 4 байтов. Стандарт utf8 использует определение до 4 байтов (utf8, wikipedia), поэтому, строго говоря, , utf8mb4 — это настоящая реализация utf8 в mysql.

Однако utf8mb4 был добавлен относительно недавно (v5.5.3), поэтому его существование до сих пор не так широко известно в сообществе mysql (MySql utf8mb4).

Если вы попытаетесь импортировать данные, используя этот набор символов, в базу данных, которая его не поддерживает, вы получите сообщение об ошибке в своем вопросе.

Сопоставление должно соответствовать кодировке, поэтому, если у вас есть набор символов utf8mb4, используйте также сопоставление utf8mb4. Вам необходимо преобразовать ваши данные в набор символов, который поддерживается вашей целевой системой, и вам необходимо согласовать параметры сортировки с вашей кодировкой.

person Shadow    schedule 07.10.2015
comment
Я не понимаю, вы говорите, если у вас есть набор символов utf8mb4. Как я могу это проверить? я могу изменить utf8mb4 на utf8? куда? как? - person Nrc; 07.10.2015
comment
Команда show character set выведет список наборов символов, поддерживаемых вашим сервером mysql. Изменение — это преобразование ваших данных, существует множество инструментов, которые могут это сделать. - person Shadow; 07.10.2015