Pro InnoDB , zdá se, že následující funguje:vytvořte novou prázdnou databázi a poté postupně přejmenujte každou tabulku na novou databázi:
RENAME TABLE old_db.table TO new_db.table;
Poté budete muset upravit oprávnění.
Pro skriptování v shellu můžete použít některý z následujících:
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
NEBO
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;
Poznámky:
- Mezi možností
-p
není mezera a heslo. Pokud vaše databáze nemá žádné heslo, odstraňte-u username -ppassword
část. -
Pokud má některá tabulka spouštěč, nelze ji přesunout do jiné databáze pomocí výše uvedené metody (výsledkem bude
Trigger in wrong schema
chyba). V takovém případě použijte tradiční způsob klonování databáze a poté starou zrušte:mysqldump old_db | mysql new_db
-
Pokud máte uložené procedury, můžete je poté zkopírovat:
mysqldump -R old_db | mysql new_db