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