Untuk InnoDB , berikut ini tampaknya berhasil:buat database kosong baru, lalu ganti nama setiap tabel secara bergantian menjadi database baru:
RENAME TABLE old_db.table TO new_db.table;
Anda perlu menyesuaikan izin setelah itu.
Untuk membuat skrip di shell, Anda dapat menggunakan salah satu dari berikut ini:
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
ATAU
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;
Catatan:
- Tidak ada spasi di antara opsi
-p
dan kata sandi. Jika database Anda tidak memiliki kata sandi, hapus-u username -ppassword
bagian. -
Jika beberapa tabel memiliki pemicu, tabel tersebut tidak dapat dipindahkan ke database lain menggunakan metode di atas (akan menghasilkan
Trigger in wrong schema
kesalahan). Jika demikian, gunakan cara tradisional untuk mengkloning database, lalu hapus yang lama:mysqldump old_db | mysql new_db
-
Jika Anda memiliki prosedur tersimpan, Anda dapat menyalinnya setelahnya:
mysqldump -R old_db | mysql new_db