Menu fechado

como renomear database em MySQL?

Hoje vamos falar de como voce pode facilmente renomear um database em MySQL,

Na versao 5.1.7 do MySQL foi adicionado um comando próprio para fazer isso chamado RENAME DATABASE

RENAME {DATABASE | SCHEMA} db_name TO new_db_name;

Porém ele foi retirado na versão 5.1.23 pois poderia resultar em perda de dados.
Então vamos ver algumas formas de tornar esse processo possível:

1. Utilizando o comando RENAME TABLE:

As long as two databases are on the same file system, you can use RENAME TABLE to move a table from one database to another:

RENAME TABLE current_db.tbl_name TO other_db.tbl_name;

RENAME TABLE Syntax na Documentacao do MySQL

mysql> show tables;
+---------------------+
| Tables_in_oldSchema |
+---------------------+
| tb1                 |
| tb10                |
| tb2                 |
| tb3                 |
| tb4                 |
| tb5                 |
| tb6                 |
| tb7                 |
| tb8                 |
| tb9                 |
+---------------------+
10 rows in set (0.00 sec)

Vamos realizar uma consulta para retornar um comando que possamos rodar nosso ALTER TABLE:

mysql>SELECT CONCAT('RENAME TABLE ', GROUP_CONCAT( table_schema,'.',table_name, ' TO ','new_schema.',table_name,' '),';') as stmt FROM information_schema.TABLES WHERE table_schema LIKE 'oldSchema' GROUP BY table_schema\G
*************************** 1. row ***************************
stmt: RENAME TABLE oldSchema.tb10 TO new_schema.tb10 ,oldSchema.tb1 TO new_schema.tb1 ,oldSchema.tb9 TO new_schema.tb9 ,oldSchema.tb8 TO new_schema.tb8 ,oldSchema.tb7 TO new_schema.tb7 ,oldSchema.tb6 TO new_schema.tb6 ,oldSchema.tb5 TO new_schema.tb5 ,oldSchema.tb4 TO new_schema.tb4 ,oldSchema.tb3 TO new_schema.tb3 ,oldSchema.tb2 TO new_schema.tb2 ;
1 row in set (0.01 sec)

ATUALIZAÇÃO:
Se o comando acima mostrar um resultado pela metade (cortado), isso ocorre pois a função GROUP_CONCAT() limita o tamanho do resultado, para corrigir isto, basta digitar o comando abaixo:

SET SESSION group_concat_max_len = 4294967295;

Pronto, basta rodar o comando recebido como retorno da consulta e esta pronto, lembrando que antes de rodar o RENAME TABLE você precisa ter o novo banco de dados criado.

2. Utilizando mysqldump

mysqldump [OPCOES] --database oldSchema > oldSchema.sql
mysql new_schema < oldSchema.sql

Por hoje é só, espero que tenham gostado!

Gostou ? Ajude e Compartilhe!