För InnoDB , följande verkar fungera:skapa den nya tomma databasen, döp sedan om varje tabell i sin tur till den nya databasen:
RENAME TABLE old_db.table TO new_db.table;
Du kommer att behöva justera behörigheterna efter det.
För att skripta i ett skal kan du använda något av följande:
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;
Anmärkningar:
- Det finns inget mellanslag mellan alternativet
-p
och lösenordet. Om din databas inte har något lösenord, ta bort-u username -ppassword
del. -
Om någon tabell har en trigger kan den inte flyttas till en annan databas med ovanstående metod (kommer att resultera i
Trigger in wrong schema
fel). Om så är fallet, använd ett traditionellt sätt att klona en databas och släpp sedan den gamla:mysqldump old_db | mysql new_db
-
Om du har lagrade procedurer kan du kopiera dem i efterhand:
mysqldump -R old_db | mysql new_db