Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como renomear rapidamente um banco de dados MySQL (alterar o nome do esquema)?


Para InnoDB , o seguinte parece funcionar:crie o novo banco de dados vazio e renomeie cada tabela para o novo banco de dados:
RENAME TABLE old_db.table TO new_db.table;

Você precisará ajustar as permissões depois disso.

Para scripts em um shell, você pode usar um dos seguintes:
mysql -u username -ppassword old_db -sNe 'show tables' | while read table; \ 
    do mysql -u username -ppassword -sNe "rename table old_db.$table to new_db.$table"; done

OU
for table in `mysql -u root -ppassword -s -N -e "use old_db;show tables from old_db;"`; do mysql -u root -ppassword -s -N -e "use old_db;rename table old_db.$table to new_db.$table;"; done;

Notas:
  • Não há espaço entre a opção -p e a senha. Se seu banco de dados não tiver senha, remova o -u username -ppassword parte.

  • Se alguma tabela tiver um gatilho, ela não poderá ser movida para outro banco de dados usando o método acima (o resultado será Trigger in wrong schema erro). Se for esse o caso, use uma maneira tradicional de clonar um banco de dados e, em seguida, descarte o antigo:

    mysqldump old_db | mysql new_db

  • Se você tiver procedimentos armazenados, poderá copiá-los posteriormente:

    mysqldump -R old_db | mysql new_db