Comment renommer une base de données MySQL (changer le nom du schéma) ?
P粉320361201
P粉320361201 2023-08-23 13:09:22
0
2
586
<p>Comment renommer rapidement une base de données MySQL (changer son nom de schéma) ? </p> <p>Habituellement, je vide simplement la base de données et la réimporte avec un nouveau nom. Pour les très grandes bases de données, ce n'est pas une option. Apparemment, <code>RENAMED {DATABASE|SCHEMA} db_name TO new_db_name;</code> fait quelque chose de mal, n'existe que dans quelques versions et est globalement une mauvaise idée. </p> <p>Ceci doit être utilisé avec InnoDB, qui stocke un contenu très différent de celui de MyISAM. </p>
P粉320361201
P粉320361201

répondre à tous(2)
P粉662089521

Utilisez 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 pour réduire les E/S, utilisez 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
P粉949190972

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

RENAME TABLE old_db.table TO new_db.table;

Vous devrez ensuite ajuster les autorisations.

Pour écrire des scripts dans le shell, vous pouvez utiliser l'une des méthodes 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;

Remarque :

    Rubrique
  • Options-p和密码之间没有空格。如果您的数据库没有密码,请删除 -u username -ppassword.
  • Si une table a des déclencheurs, 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 une 触发器错误架构erreur). Si tel est le cas, clonez la base de données en utilisant les méthodes traditionnelles puis supprimez l'ancienne base de données :

    mysqldump old_db | mysql new_db

  • Si vous avez des procédures stockées, vous pouvez ensuite les copier :

    mysqldump -R old_db | mysql new_db

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal