Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie kann ich eine MySQL-Datenbank schnell umbenennen (Schemanamen ändern)?

Für InnoDB , scheint Folgendes zu funktionieren:Erstellen Sie die neue leere Datenbank und benennen Sie dann jede Tabelle der Reihe nach in die neue Datenbank um:

RENAME TABLE old_db.table TO new_db.table;

Danach müssen Sie die Berechtigungen anpassen.

Für die Skripterstellung in einer Shell können Sie eines der folgenden verwenden:

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

ODER

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;

Hinweise:

  • Es gibt kein Leerzeichen zwischen der Option -p und das Passwort. Wenn Ihre Datenbank kein Passwort hat, entfernen Sie -u username -ppassword Teil.
  • Wenn eine Tabelle einen Trigger hat, kann sie mit der obigen Methode nicht in eine andere Datenbank verschoben werden (führt zu Trigger in wrong schema Error). Verwenden Sie in diesem Fall eine herkömmliche Methode zum Klonen einer Datenbank und löschen Sie dann die alte:

    mysqldump old_db | mysql new_db

  • Wenn Sie gespeicherte Prozeduren haben, können Sie diese nachträglich kopieren:

    mysqldump -R old_db | mysql new_db