Dla InnoDB , wydaje się, że działa następujące:utwórz nową pustą bazę danych, a następnie zmień nazwę każdej tabeli po kolei na nową bazę danych:
RENAME TABLE old_db.table TO new_db.table;
Po tym będziesz musiał dostosować uprawnienia.
Do pisania skryptów w powłoce możesz użyć jednego z poniższych:
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
LUB
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;
Uwagi:
- Nie ma spacji między opcją
-p
i hasło. Jeśli twoja baza danych nie ma hasła, usuń-u username -ppassword
część. -
Jeśli jakaś tabela ma wyzwalacz, nie może zostać przeniesiona do innej bazy danych przy użyciu powyższej metody (spowoduje to, że
Trigger in wrong schema
błąd). Jeśli tak jest, użyj tradycyjnego sposobu sklonowania bazy danych, a następnie pozbądź się starej:mysqldump old_db | mysql new_db
-
Jeśli masz procedury składowane, możesz je później skopiować:
mysqldump -R old_db | mysql new_db