Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment renommer rapidement une base de données MySQL (changer le nom du schéma) ?

Pour InnoDB , ce qui suit semble fonctionner :créez la nouvelle base de données vide, puis renommez chaque table à tour de rôle dans la nouvelle base de données :

RENAME TABLE old_db.table TO new_db.table;

Vous devrez ensuite ajuster les autorisations.

Pour créer des scripts dans un shell, vous pouvez utiliser l'une des options suivantes :

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;

Remarques :

  • Il n'y a pas d'espace entre l'option -p et le mot de passe. Si votre base de données n'a pas de mot de passe, supprimez le -u username -ppassword partie.
  • Si une table a un déclencheur, elle ne peut pas être déplacée vers une autre base de données en utilisant la méthode ci-dessus (cela entraînera Trigger in wrong schema Erreur). Si tel est le cas, utilisez une méthode traditionnelle pour cloner une base de données, puis supprimez l'ancienne :

    mysqldump old_db | mysql new_db

  • Si vous avez des procédures stockées, vous pouvez les copier par la suite :

    mysqldump -R old_db | mysql new_db