sexta-feira, 28 de julho de 2017

MySQL - Aletrando database para utf8mb4

Como tudo sempre estoura na conta do SysAdmin desta vez foi uma mudança no banco de dados MySQL de um determinado sistema. A tarefa era simples, até para quem não trabalha com banco de dados, e consistia em alterar a codificação do banco das mais de 300 tabelas.

Mãos a obra:

1 - Depois de conectar no servidor com MySQL Workbench, phpMyAdmin ou outro qualquer a sua escolha, selecione o database e rode este SQL para alterar a codificação da base.
ALTER TABLE minhaTabela CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
2 - Agora para alterar as tabelas, sem ter que fazer manualmente uma a uma.
SELECT CONCAT('ALTER TABLE `', TABLE_NAME,'` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;') AS mySQL FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA= "SEU_DATABASE_AQUI" AND TABLE_TYPE="BASE TABLE"
Esse script acima vai gerar outro script, algo parecido este abaixo, que finalmente fará as devidas alterações nas tabelas.
ALTER TABLE `TABELA_1` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE `TABELA_2` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
ALTER TABLE `TABELA_3` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
Agora sim, seus problemas acabaram!

Fonte: https://dba.stackexchange.com/questions/8239/how-to-easily-convert-utf8-tables-to-utf8mb4-in-mysql-5-5