Pregunta ¿Cómo renombrar una base de datos MySQL?


¿Cómo renombrar una base de datos MySQL?

El manual en línea de MySQL ha dicho sobre el comando RENAME DATABASE (esta página de documentación ha sido eliminada por Oracle hace algún tiempo):

Esta declaración se agregó en MySQL 5.1.7 pero se encontró que era peligrosa y   fue eliminado en MySQL 5.1.23.

Entonces, ¿cómo proceder? El fundamento: Comenzamos con un nombre de código para el proyecto y queremos que el nombre de la base de datos ahora refleje el nombre definitivo del proyecto.


38
2017-10-27 07:35


origen


Las cuatro respuestas tienen sentido. Es una pregunta con muchas soluciones posibles. - nalply
stackoverflow.com/questions/12190000/rename-mysql-database/… - Sathish D
stackoverflow.com/questions/67093/… - Sathish D


Respuestas:


Desde esta blog publicado por Ilan Hazan:

En MySQL no hay soporte para el cambio de nombre de la base de datos. Para cambiar el nombre de una base de datos MySQL, puede realizar una de las siguientes acciones:

  1. Cree una nueva base de datos y cambie el nombre de todas las tablas en la base de datos anterior para que estén en la nueva base de datos:

    CREATE database new_db_name;
    RENAME TABLE db_name.table1 TO new_db_name, db_name.table2 TO new_db_name;
    DROP database db_name;
    
  2. En el shell de Linux, use mysqldump para hacer una copia de seguridad de la base de datos anterior, luego restaure la base de datos volcada con un nuevo nombre utilizando la utilidad MySQL. Finalmente, use el comando drop database para eliminar la base de datos antigua. Esta opción puede funcionar mal para una base de datos grande.

    mysqldump -uxxxx -pxxxx -h xxxx db_name > db_name_dump.sql
    mysql -uxxxx -pxxxx -h xxxx -e "CREATE DATABASE new_db_name"
    mysql -uxxxx -pxxxx -h xxxx new_db_name < db_name_dump.sql
    mysql -uxxxx -pxxxx -h xxxx -e "DROP DATABASE db_name"
    
  3. Escribe un script de Linux simple (mi solución favorita)

    #!/bin/bash
    
    mysqlconn="mysql -u xxxx -pxxxx -S /var/lib/mysql/mysql.sock -h localhost"
    olddb=xxxx
    newdb=xxxx
    
    #$mysqlconn -e "CREATE DATABASE $newdb"
    params=$($mysqlconn -N -e "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='$olddb'")
    
    for name in $params; do
          $mysqlconn -e "RENAME TABLE $olddb.$name to $newdb.$name";
    done;
    
    #$mysqlconn -e "DROP DATABASE $olddb"
    
  4. Si todas sus tablas son MyISAM, puede cambiar el nombre de la carpeta de la base de datos anterior:

    1. Apague el servidor MySQL,
    2. Renombra el nombre de la carpeta de la base de datos al nuevo nombre,
    3. Iniciar el servidor MySQL.

48
2017-09-27 15:40



Aquí hay una forma alternativa de generar el comando de renombrar tablas en SQL directamente dentro de MySQL: blog.marceloaltmann.com/how-to-rename-a-database-in-mysql - Yves Martin
Esto ayudará a crear una consulta para la primera solución. Simplemente copia los resultados de la copia detrás de RENAME TABLE SELECT CONCAT('olddb.', TABLE_NAME, ' TO newdb.', TABLE_NAME, ',') FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='olddb';; - Syclone
Pero si no inserta los datos en la nueva base de datos, se perderán - rainman
Gracias. Esta es la mejor respuesta. Muchas gracias! - daixtr


MySQL un poco apesta por esto. La única solución sólida y confiable es usar phpMyAdmin.

Login -> hacer clic  Scheme -> hacer clic  Operations -> encontrar Rename database to: -> escribir NewName > hacer clic  Go.

Tan sencillo como eso. Todos los permisos son prorrogados.


9
2017-10-27 07:42



+1 para una solución GUI, pero los comandos y scripts simples en la respuesta de la comunidad wiki también son perfectamente "sólidos y confiables" - Will Sheppard


Tiendo a crear una nueva base de datos, y luego vuelco las tablas de la anterior, en un archivo .sql (con mysqldump), edito el archivo, hago algún tipo de s/old_database/new_database/g y luego reimportarlo en la nueva db.
Probablemente no sea la mejor manera de hacerlo, pero funciona.


4
2017-10-29 13:50





Encontré una solución muy simple: cerrar MySQL, cambiar el nombre del directorio de la base de datos y reiniciar. ¡Eso es todo!

Es un poco peligroso si tiene un código SQL o datos que se refieren al nombre anterior. Luego debe cambiar eso también antes de reiniciar la aplicación. Pero no necesitaba hacer eso, sino YMV.

Googlear da algunos consejos como estos dos:

https://stackoverflow.com/questions/67093/how-do-i-quickly-rename-a-mysql-database-change-schema-name

http://www.delphifaq.com/faq/databases/mysql/f574.shtml


4
2017-09-11 05:26





Usé el siguiente método para cambiar el nombre de la base de datos

  1. haga una copia de seguridad del archivo utilizando mysqldump o cualquier herramienta de base de datos, por ejemplo, heidiSQL, mysql administrator, etc.

  2. Abra un archivo de copia de seguridad (por ejemplo, backupfile.sql) en algún editor de texto.

  3. Busque y reemplace el nombre de la base de datos y guarde el archivo.

  4. Restaurar el archivo sql editado


1
2017-10-27 08:53





Si tienes la oportunidad de usar una herramienta de administración de MySQL (por ejemplo, phpMyAdmin), puedes cambiarle el nombre fácilmente ya que crean la consulta por ti.

En phpMyAdmin también crean cada tabla e insertan los datos mediante "INSERT INTO ... SELECT * FROM ...". Así que encadenando copian los datos.

Si no puede hacer esto, recomendaría hacer un volcado y volver a importar el archivo sql a una nueva base de datos.

¡Buena suerte!

Saludos, Ben


0