1143 votes

Comment puis-je renommer rapidement une base de données mysql (changement de nom de schéma)?

Habituellement, je viens de faire un dump de la base de données et de les réimporter avec un nouveau nom. Ce n'est pas une option pour les très grandes bases de données. Apparemment RENAME {DATABASE | SCHEMA} db_name TO new_db_name; fait de mauvaises choses, n'existent que dans une poignée de versions, et est une mauvaise idée.

Ce besoin de travailler avec InnoDB, qui stocke les choses très différemment que MyISAM.

1009voto

Thorsten Points 2246

Pour InnoDB, la suite semble fonctionner: créer la nouvelle base de données vide, puis renommez chaque table à son tour dans la nouvelle base de données:

RENAME TABLE old_db.table TO new_db.table;

Vous aurez besoin d'ajuster les autorisations d'après.

503voto

hendrasaputra Points 1275

L'utilisation de ces quelques commandes simples

mysqldump -u username -p -v olddatabase > olddbdump.sql
mysqladmin -u username -p create newdatabase
mysql -u username -p newdatabase < olddbdump.sql

Ou à réduire IO utiliser ce qui suit comme suggéré par @Pablo Marin-Garcia

mysqladmin -u username -p create newdatabase
mysqldump -u username -v olddatabase -p | mysql -u username -p -D newdatabase

245voto

raphie Points 1539

Je suis désolé de poster dans ce vieux thread, mais je pense que la solution la plus simple et a été suggéré par certains développeurs. phpMyAdmin est une opération pour cela.

À partir de phpMyAdmin, sélectionnez la base de données que vous souhaitez sélectionner, dans les onglets, il est l'un appelé Opérations, Allez à la section renommer. C'est tout.

Ce qu'il fait est que beaucoup ont suggéré de créer une nouvelle base de données avec le nouveau nom, vider toutes les tables de l'ancienne base de données dans la nouvelle base de données et de la chute de l'ancienne base de données.

enter image description here

122voto

ErichBSchulz Points 1058

Générer un script SQL pour transférer chaque table dans votre base de données source à la base de données de destination.

Vous devez créer la base de données de destination avant d'exécuter le script généré à partir de la commande.

SELECT concat('RENAME TABLE $1.',table_name, ' TO $2.',table_name, ';')
FROM information_schema.TABLES 
WHERE table_schema='$1';

(1$et 2 $sont la source et la cible, respectivement)

25voto

longneck Points 301

trois options:

1) créer la nouvelle base de données, l'arrêt du serveur, de déplacer les fichiers d'un dossier de base de données à l'autre, et redémarrez le serveur. notez que cela ne fonctionne que si l'ENSEMBLE de vos tables myisam.

2) créer la nouvelle base de données, utilisez CREATE TABLE ... COMME les états, puis utilisez INSERT ... SELECT * from consolidés.

3) utiliser mysqldump et de le recharger avec ce fichier.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X