Инструменты пользователя

Инструменты сайта


mysql
добавлю свою памятку для случаев когда нужна конвертация в utf8

Конвертировать базу в UTF8

Действие первое — сделать дамп базы с помощью утилиты «mysqldump», команда выглядит примерно вот так:
mysqldump -u user -p --default-character-set=latin1 --skip-set-charset dbname > dbname.sql

Действие второе — заменить стандартные кодировки таблиц:
sed -r 's/latin1/utf8/g' dbname.sql > dbname_utf.sql

Действие третье — воссоздать базу данных с новой дефольной кодировкой:
mysql -u user -p --execute="DROP DATABASE dbname; CREATE DATABASE dbname CHARACTER SET utf8 COLLATE utf8_general_ci;"

Действие четвёрное — залить в базу все данные:
mysql -u user -p --default-character-set=utf8 dbname < dbname_utf.sql

Вот, собственно и всё. Правда есть ещё одна очень важная мелочь — указывать стандартную кодировку для отдачи данных для каждого нового соединения с СУБД, делается это следующим SQL запросом:
SET NAMES 'utf8' COLLATE 'utf8_general_ci'

+ может появиться ошибка
ERROR 1071 (42000) at line 5503: Specified key was too long; max key length is 1000 bytes
для этого надо отредактировать в create table создание индекса
наример `syntax`(256) -> `syntax`(70)
тут размер в символах а не в байтах
mysql.txt · Последние изменения: 2015/12/16 13:55 — Alex