프로그래밍 언어/Database

MySQL 데이터베이스의 이름을 손쉽게 바꾸는 방법

Rateye 2021. 6. 28. 10:21
728x90
반응형
질문 : MySQL 데이터베이스의 이름을 빠르게 바꾸려면 어떻게합니까 (스키마 이름 변경)

에서 MySQL의 매뉴얼 MySQL은 이를 다루고 있습니다.

일반적으로 데이터베이스를 덤프하고 새 이름으로 다시 가져옵니다. 이것은 매우 큰 데이터베이스에 대한 옵션이 아닙니다. RENAME {DATABASE | SCHEMA} db_name TO new_db_name; 나쁜 일을하고 소수의 버전에만 존재하며 전반적으로 나쁜 생각입니다 .

이것은 MyISAM 과는 매우 다른 것을 저장 하는 InnoDB 와 함께 작동해야합니다.

답변

InnoDB 의 경우 다음이 작동하는 것 같습니다. 새 빈 데이터베이스를 만든 다음 각 테이블의 이름을 차례로 새 데이터베이스로 바꿉니다.

RENAME TABLE old_db.table TO new_db.table;

그 후에 권한을 조정해야합니다.

셸에서 스크립팅하려면 다음 중 하나를 사용할 수 있습니다.

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
    

또는

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;
    

메모:

  • -p 옵션과 암호 사이에는 공백이 없습니다. 데이터베이스에 암호가없는 경우 -u username -ppassword 부분을 제거하십시오.
  • 일부 테이블에 트리거가있는 경우 위의 방법을 사용하여 다른 데이터베이스로 이동할 수 없습니다 ( Trigger in wrong schema 오류로 트리거 발생). 이 경우 기존 방법을 사용하여 데이터베이스를 복제 한 다음 이전 데이터베이스를 삭제하십시오. mysqldump old_db | mysql new_db
  • 저장 프로 시저가있는 경우 나중에 복사 할 수 있습니다. mysqldump -R old_db | mysql new_db

 

  • 일부 테이블에 트리거가있는 경우 위의 방법을 사용하여 다른 데이터베이스로 이동할 수 없습니다 ( Trigger in wrong schema 오류로 트리거 발생). 이 경우 기존 방법을 사용하여 데이터베이스를 복제 한 다음 이전 데이터베이스를 삭제하십시오. mysqldump old_db | mysql new_db

 

 

mysqldump -R old_db | mysql new_db

출처 : https://stackoverflow.com/questions/67093/how-do-i-quickly-rename-a-mysql-database-change-schema-name
728x90
반응형