Til InnoDB , ser det ud til at følgende virker:opret den nye tomme database, og omdøb derefter hver tabel til den nye database:
RENAME TABLE old_db.table TO new_db.table;
Du bliver nødt til at justere tilladelserne derefter.
Til scripting i en shell kan du bruge en af følgende:
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
ELLER
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;
Bemærkninger:
- Der er ingen mellemrum mellem indstillingen
-p
og adgangskoden. Hvis din database ikke har nogen adgangskode, skal du fjerne-u username -ppassword
del. -
Hvis en tabel har en trigger, kan den ikke flyttes til en anden database ved hjælp af ovenstående metode (vil resultere i
Trigger in wrong schema
fejl). Hvis det er tilfældet, skal du bruge en traditionel måde at klone en database på og derefter slippe den gamle:mysqldump old_db | mysql new_db
-
Hvis du har gemte procedurer, kan du kopiere dem efterfølgende:
mysqldump -R old_db | mysql new_db