Сохранение multibyte символов в mysqldump (utf8mb4)
При дампе БД с кодировкой utf8 не будут сохраняться 4-х байтные символы, например такие как эмотиконы.
Чтобы обеспечить дамп и восстановление эмотиконов нужно указать кодировку utf8mb4 вместо utf8 при дампе:
mysqldump -ulocal -plocal --default-character-set=utf8mb4 DB_NAME > DB_NAME.sql
Внимание!
В phpmyadmin
нельзя выбрать кодировку utf8mb4
при экспорте/импорте. Но, если сами таблицы в utf8mb4
и вы используете phpmyadmin 4.5
, то при выбранной кодировке utf8
, эмотиконы успешно сохраняются. В phpmyadmin 4
- мультибайтные символы НЕ сохраняются при экспорте!
Примечание
Для установки кодировки utf8mb4
на всю БД выполните:
SET NAMES utf8mb4;
ALTER DATABASE db_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
Установить кодировку на таблицу:
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
На колонку:
ALTER TABLE table_name CHANGE column_name column_name VARCHAR(140) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL;
После этого оптимизируйте БД:
REPAIR TABLE table_name;
OPTIMIZE TABLE table_name;
Или утилитой (--all-databases
если хотите оптимизировать все БД):
mysqlcheck -u root -p --auto-repair --optimize
#mysql multibute dump, #mysql dump utf8mb4