За InnoDB , изглежда, че следното работи:създайте новата празна база данни, след това преименувайте всяка таблица на свой ред в новата база данни:
RENAME TABLE old_db.table TO new_db.table;
След това ще трябва да коригирате разрешенията.
За скриптове в обвивка можете да използвате едно от следните:
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
ИЛИ
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;
Бележки:
- Няма интервал между опцията
-p
и паролата. Ако вашата база данни няма парола, премахнете-u username -ppassword
част. -
Ако някаква таблица има задействане, тя не може да бъде преместена в друга база данни с помощта на горния метод (ще доведе до
Trigger in wrong schema
грешка). Ако случаят е такъв, използвайте традиционен начин за клониране на база данни и след това изхвърлете старата:mysqldump old_db | mysql new_db
-
Ако имате съхранени процедури, можете да ги копирате след това:
mysqldump -R old_db | mysql new_db