Đối với InnoDB , cách sau dường như hoạt động:tạo cơ sở dữ liệu trống mới, sau đó đổi tên lần lượt từng bảng thành cơ sở dữ liệu mới:
RENAME TABLE old_db.table TO new_db.table;
Bạn sẽ cần phải điều chỉnh các quyền sau đó.
Để viết script trong shell, bạn có thể sử dụng một trong các cách sau:
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
HOẶC
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;
Ghi chú:
- Không có khoảng trống giữa tuỳ chọn
-p
và mật khẩu. Nếu cơ sở dữ liệu của bạn không có mật khẩu, hãy xóa-u username -ppassword
một phần. -
Nếu một số bảng có trình kích hoạt, thì không thể di chuyển nó sang cơ sở dữ liệu khác bằng phương pháp trên (sẽ dẫn đến
Trigger in wrong schema
lỗi). Nếu đúng như vậy, hãy sử dụng cách truyền thống để sao chép cơ sở dữ liệu và sau đó loại bỏ cơ sở dữ liệu cũ:mysqldump old_db | mysql new_db
-
Nếu bạn đã lưu trữ các thủ tục, bạn có thể sao chép chúng sau đó:
mysqldump -R old_db | mysql new_db