Voor InnoDB , lijkt het volgende te werken:maak de nieuwe lege database aan en hernoem vervolgens elke tabel om de beurt in de nieuwe database:
RENAME TABLE old_db.table TO new_db.table;
Daarna moet je de rechten aanpassen.
Voor scripting in een shell kunt u een van de volgende gebruiken:
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
OF
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;
Opmerkingen:
- Er is geen spatie tussen de optie
-p
en het wachtwoord. Als uw database geen wachtwoord heeft, verwijder dan de-u username -ppassword
deel. -
Als een tabel een trigger heeft, kan deze niet met de bovenstaande methode naar een andere database worden verplaatst (zal resulteren in
Trigger in wrong schema
fout). Als dat het geval is, gebruik dan een traditionele manier om een database te klonen en verwijder de oude:mysqldump old_db | mysql new_db
-
Als u opgeslagen procedures heeft, kunt u deze achteraf kopiëren:
mysqldump -R old_db | mysql new_db