Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm cách nào để nhanh chóng đổi tên cơ sở dữ liệu MySQL (thay đổi tên lược đồ)?

Đố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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Có vấn đề gì xảy ra với các phép nối không sử dụng từ khóa JOIN trong SQL hoặc MySQL không?

  2. MySQL (hay PHP?) Nhóm kết quả theo dữ liệu trường

  3. Làm cách nào để liệt kê có cùng dữ liệu id với vòng lặp while trong PHP?

  4. Tạo cơ sở dữ liệu MySQL từ Java

  5. Tạo cây dựa trên Độ sâu từ Dữ liệu phân cấp trong MySQL (không có CTE)