Сообщить об ошибке.

Преобразование БД MySQL в требуемую кодировку

Материал представляет собой набор полезных MySQL сценариев/команд.

Как конвертировать/преобразовать таблицы БД в требуемую кодировку.

ВНИМАНИЕ: прежде чем запускать преобразование кодировки таблиц обязательно создайте резервную копию базы данных.

$ mysqldump -v -h<host> -u<user> -p<password> <db_name> > db_name.sql

Создадим SQL-скрипт конвертации всех таблиц БД из ЛЮБОЙ кодировки (ну например из CP1251) в требуемую кодировку utf8mb4:

--- здесь нужно заменить `db_name` на имя своей базы данных
SELECT CONCAT('ALTER TABLE `', t.`TABLE_SCHEMA`, '`.`', t.`TABLE_NAME`, 
        '` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;') AS sqlcode 
FROM `information_schema`.`TABLES` t 
WHERE t.`TABLE_SCHEMA` = 'db_name';

После выполнения этого запроса можно будет увидеть набор SQL-скриптов для конвертации всех имеющихся таблиц в указанной базе данных, в данном случае db_name:

ALTER TABLE `db_name`.`table_1` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE `db_name`.`table_2` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
...
...
...
ALTER TABLE `db_name`.`table_9` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE `db_name`.`table_10` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

Последний штрих. Для того, что бы новые таблицы БД создавались в НОВОЙ кодировке необходимо выполнить еще одну MySQL команду:

ALTER DATABASE db_name DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci;

Другие полезные MySQL-команды (пополняется).

Создание БД MySQL

mysql [(none)]> CREATE DATABASE `db_name`;

Создание БД MySQL с указанием необходимой кодировки:

--- utf8mb4 - расширенная кодировка UTF8, включает хранение смайликов и т.д.
mysql [(none)]> CREATE DATABASE `db_name` DEFAULT CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_general_ci';

Удалить БД MySQL:

mysql [(none)]> DROP DATABASE `db_name`;

Получить список всех баз данных на сервере:

mysql [(none)]> SHOW DATABASES;

Переключится/выбрать базу данных по умолчанию:

mysql [(none)]> USE `db_name`;

Получить список таблиц в базе данных по умолчанию:

mysql [db_name]> SHOW TABLES;

Удалить таблицу из базы данных по умолчанию:

mysql [db_name]> DROP TABLE `table_name`;

Посмотреть структуру таблицы:

mysql [db_name]> DESCRIBE `table_name`;

Ещё один вариант:

mysql [db_name]> SHOW COLUMNS FROM `table_name`;