Mysql Как поменять кодировку всех таблиц в MySQL

confguru

ExAdmin
Команда форума
Иногда бывает так, что из доступа к базе данных бывает только доступ через phpMyAdmin. А также бывает, что кто-то, создал базу с неправильной кодировкой. В моем случае этой кодировкой была — шведская. Что же делать для того чтобы поменять кодировку на более нужную — к примеру utf8?

Для одной таблички все просто
Код:
ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name [COLLATE collation_name]
А когда их много поможет
Код:
SELECT CONCAT('ALTER TABLE `', t.`TABLE_SCHEMA`, '`.`', t.`TABLE_NAME`, '` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;') as sqlcode
  FROM `information_schema`.`TABLES` t
WHERE 1
  AND t.`TABLE_SCHEMA` = 'db_name'
ORDER BY 1
где db_name - имя вашей БД

Получим

Код:
ALTER TABLE `db_name`.`group_permissions` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE `db_name`.`group` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE `db_name`.`message` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
....
Осталось только выполнить эти запросы..
 

Vorobyov1996

Новичок
Иногда бывает так, что из доступа к базе данных бывает только доступ через phpMyAdmin. А также бывает, что кто-то, создал базу с неправильной кодировкой. В моем случае этой кодировкой была — шведская. Что же делать для того чтобы поменять кодировку на более нужную — к примеру utf8?

Осталось только выполнить эти запросы..

Багодарю за статью, а как быть если наоборот, доступ только через консоль? Как тогда изменить кодировку?
 

AnrDaemon

Продвинутый новичок
Так же.
Вот только приведёнными командами кодировку можно только уничтожить, но не изменить.
 

Pacifik

Новичок
А если нужно utf8_general_ci таблицы конвертировать в utf8mb4_general_ci, как лучше сделать, подскажите, пожалуйста. Для того, чтобы смайлики Emoji сохранялись.
 

WMix

герр M:)ller
Партнер клуба
а чем utf8 не угодил?
 
Последнее редактирование:

AnrDaemon

Продвинутый новичок
А если нужно utf8_general_ci таблицы конвертировать в utf8mb4_general_ci, как лучше сделать, подскажите, пожалуйста. Для того, чтобы смайлики Emoji сохранялись.
Так и поменять.
Код:
ALTER TABLE xxx MODIFY COLUMN yyy COLLATE utf8mb4_general_ci, ... ;
 
Сверху