Материал представляет собой набор полезных 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 [(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`;