67 votes

Comment renommer une base de données MySQL ?

Comment renommer une base de données MySQL ?

Le manuel en ligne de MySQL contient des informations sur la commande RENAME DATABASE (cette page de documentation a été supprimée par Oracle il y a quelque temps) :

Cette déclaration a été ajoutée dans MySQL 5.1.7 mais s'est avérée dangereuse et a été supprimée dans MySQL 5.1.23. a été supprimée dans MySQL 5.1.23.

Alors, comment procéder ? Le raisonnement : Nous avons commencé avec un nom de code pour le projet et nous voulons maintenant que le nom de la base de données reflète le nom définitif du projet.

79voto

Imran Points 20117

De ce billet de blog d'Ilan Hazan :

MySQL ne prend pas en charge le renommage des bases de données. Pour renommer une base de données MySQL, vous pouvez effectuer l'une des opérations suivantes :

  1. Créez une nouvelle base de données et renommez toutes les tables de l'ancienne base de données pour qu'elles soient dans la nouvelle base de données :

     CREATE database new_db_name;
     RENAME TABLE db_name.table1 TO new_db_name.table1, db_name.table2 TO new_db_name.table2;
     DROP database db_name;
  2. Dans Linux Shell, utilisez mysqldump pour sauvegarder l'ancienne base de données, puis restaurez la base de données vidée sous un nouveau nom en utilisant l'utilitaire MySQL. Enfin, utilisez la commande drop database pour abandonner l'ancienne base de données. Cette option peut donner de mauvais résultats pour les grandes bases de données.

     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. Ecrire un simple script Linux (ma solution préférée)

     #!/bin/bash
    
     dbuser=xxxx
     dbpass=xxxx
     olddb=xxxx
     newdb=xxxx
    
     mysqlconn="mysql -u $dbuser -p$dbpass -h localhost"
    
     $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";
           echo "Renamed $olddb.$name to $newdb.$name";
     done;
    
     #$mysqlconn -e "DROP DATABASE $olddb"
  4. Si toutes vos tables sont MyISAM, vous pouvez renommer l'ancien nom du dossier de la base de données :

    1. Arrêtez le serveur MySQL,
    2. Renommez le nom du dossier de la base de données avec le nouveau nom,
    3. Démarrez le serveur MySQL.

13voto

spencerthayer Points 139

MySQL ne convient pas pour cela. La seule solution solide et fiable est d'utiliser phpMyAdmin .

Login --> click Scheme --> click Operations --> trouver Rename database to: --> écrire NewName > click Go .

C'est aussi simple que cela. Toutes les permissions sont reportées.

7voto

Fahad Ahammed Points 673

J'ai trouvé une solution très simple : Arrêtez MySQL, renommez le répertoire de la base de données et redémarrez. C'est tout !

C'est un peu dangereux si vous avez du code SQL ou des données faisant référence à l'ancien nom. Vous devez alors le modifier également avant de redémarrer l'application. Mais je n'ai pas eu besoin de faire ça, mais YMV.

Une recherche sur Google donne quelques indications, comme ces deux-là :

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

5voto

Pablo Venturino Points 1660

J'ai tendance à créer une nouvelle base de données, puis à vider les tables de l'ancienne dans un fichier .sql (avec mysqldump), à éditer le fichier, à faire une sorte de s/old_database/new_database/g et ensuite le réimporter dans la nouvelle base de données.
Ce n'est probablement pas la meilleure façon de faire, mais ça marche.

3voto

Adarsha Points 21

J'ai utilisé la méthode suivante pour renommer la base de données

  1. Faites une sauvegarde du fichier en utilisant mysqldump ou tout autre outil de base de données, par exemple heidiSQL, mysql administrator, etc.

  2. Ouvrez le fichier de sauvegarde (par exemple backupfile.sql) dans un éditeur de texte.

  3. Rechercher et remplacer le nom de la base de données et enregistrer le fichier.

  4. Restaurer le fichier sql édité

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X