sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo puedo cambiar rápidamente el nombre de una base de datos MySQL (cambiar el nombre del esquema)?

Para InnoDB , lo siguiente parece funcionar:cree la nueva base de datos vacía, luego cambie el nombre de cada tabla a la nueva base de datos:

RENAME TABLE old_db.table TO new_db.table;

Deberá ajustar los permisos después de eso.

Para secuencias de comandos en un shell, puede usar cualquiera de los siguientes:

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

O

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:

  • No hay espacio entre la opción -p y la contraseña. Si su base de datos no tiene contraseña, elimine el -u username -ppassword parte.
  • Si alguna tabla tiene un disparador, no se puede mover a otra base de datos usando el método anterior (dará como resultado Trigger in wrong schema error). Si ese es el caso, use una forma tradicional de clonar una base de datos y luego elimine la anterior:

    mysqldump old_db | mysql new_db

  • Si tiene procedimientos almacenados, puede copiarlos después:

    mysqldump -R old_db | mysql new_db