개발바닥곰발바닥
728x90

MySQL 5.1.23 버전 이후로 RENAME DATABASE 구문이 제거되었기 때문에 이미 생성한 데이터베이스의 이름을 변경하고 싶은 경우, 새로운 데이터베이스를 만들어서 그 데이터베이스에 기존 데이터베이스를 옮겨주는 방식으로 가능하다.

 

 

1. RENAME TABLE 사용

CREATE DATABASE '새로운 DB명';
RENAME TABLE '기존DB.테이블명' TO '새DB.테이블명';
DROP DATABASE '기존DB명';

방법은 매우 간단하지만 테이블이 많을 경우 작업을 여러번 해야 한다는 번거로움이 있다. concat을 사용하여 반복 작업을 자동화 하는 방법이 있지만 이 게시글에선 따로 설명하지 않고 MySQL 공식 문서에 있는 방법을 소개한다.

 


 

2. mysqldump 사용

$> mysqldump -u root -p db1 > dump.sql # 기존 DB sql문으로 dump
$> mysqldump -u root -p --routines db1 > dump.sql # 옮길 procedure가 있는 경우
$> mysqladmin -u root -p create db2 # 새로운 DB 생성
$> mysql -u root -p db2 < dump.sql # 새 DB에 기존 DB dump를 덮어씌움
$> mysql -u root -p -e "DROP DATABASE db1" # 기존 DB 삭제


기존 DB의 dump 파일을 만들어서 새 DB에 옮기는 방식이다.
아래에 MySQL 공식 문서를 링크해두었다.

https://dev.mysql.com/doc/refman/8.0/en/mysqldump-copying-database.html

 

MySQL :: MySQL 8.0 Reference Manual :: 7.4.5.1 Making a Copy of a Database

7.4.5.1 Making a Copy of a Database $> mysqldump db1 > dump.sql $> mysqladmin create db2 $> mysql db2 < dump.sql Do not use --databases on the mysqldump command line because that causes USE db1 to be included in the dump file, which overrides the effect o

dev.mysql.com

 

728x90
profile

개발바닥곰발바닥

@bestinu

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!