MySQL 데이터베이스 및 테이블 Character 및 Collate 일괄 변경 방법
목차
- 단계 1: 데이터베이스 및 테이블 백업
- 단계 2: 데이터베이스 Character Set 및 Collation 변경
- 단계 3: 테이블 Character Set 및 Collation 변경
- 단계 4: 변경 내용 확인
MySQL 데이터베이스와 테이블의 Character Set 및 Collation을 변경하는 작업은 다양한 이유로 필요할 수 있습니다. 예를 들어, 다국어 데이터를 다루는 웹 애플리케이션을 개발하고 있는 경우, 데이터의 언어 및 정렬 순서에 따라 Character Set 및 Collation을 설정해야 할 수 있습니다.
아래에서는 MySQL에서 데이터베이스와 테이블의 Character Set 및 Collation을 일괄 변경하는 단계를 안내합니다.
단계 1: 데이터베이스 및 테이블 백업
데이터의 손실을 방지하기 위해 변경 전에 모든 데이터베이스와 테이블을 백업하세요. 이를 통해 언제든지 원래 상태로 복원할 수 있습니다.
단계 2: 데이터베이스 Character Set 및 Collation 변경
데이터베이스의 Character Set 및 Collation을 변경하려면 다음 쿼리를 사용합니다. 여기에 예시로 사용한 SQL문은 MySQL 8.0 이상에서 다국어 데이터 저장에 유리하고 ngram등 다양한 Full Text Search 방법을 사용할 수 있는 utf8mb4캐릭터셋의 utf8mb4_0900_ai_ci Collation을 기준으로 설명 합니다. utf8mb4_0900_ai_ci를 지원하지 않은 데이터베이스 버젼을 사용중이라면 utf8mb4_unicode_ci를 사용 해 주세요.
ALTER DATABASE `database_name` CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci
여기서 database_name
을 변경하려는 데이터베이스의 이름으로 바꿔야 합니다.
단계 3: 테이블 Character Set 및 Collation 변경
각 테이블마다 다른 Character Set 및 Collation을 사용하려면 각 테이블마다 아래의 SQL을 사용 해야 합니다.
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;
하지만 이는 테이블 수가 많을경우 수동작업의 번거로움이 발생하므로 아래 SQL문을 이용하여 각 테이블의 SQL문을 생성하여 일괄 실행하는 방법으로 진행 해 주세요.
SELECT CONCAT('ALTER TABLE `', table_name, '` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;') AS sql_statements FROM information_schema.tables
WHERE table_schema = 'database_name' AND table_type = 'BASE TABLE';
위 SQL문을 실행후 출력되는 ALTER TABLE SQL문을 전부 실행 해 주세요.
단계 4: 변경 내용 확인
데이터베이스와 테이블의 Character Set 및 Collation이 성공적으로 변경되었는지 확인하세요. SHOW CREATE DATABASE database_name;
및 SHOW CREATE TABLE table_name;
쿼리를 사용하여 변경 내용을 확인할 수 있습니다.
안정적이고 저렴한 가상 서버(VPS) 안내
안정적인 서버 호스팅을 찾고 계신가요? 지금 Vultr 호스팅을 한번 이용 해 보세요. 지금 보고 계신 HaruLogs 사이트도 Vultr에서 VPS 호스팅 하고 있습니다. 한국, 일본, 미국등 다양한 국가에 클릭 몇번으로 안정적이고 저렴한 VPS를 운영 할 수 있습니다.
아래 배너를 통해 회원 가입을 하시면 100달러의 무료 크레딧을 받을 수 있습니다. 100달러의 무료 크레딧은 Vultr의 최소 사양 VPS를 20대 동시 운영가능한 크레딧입니다.
Vultr 서비스 요약
- VPS
- 인스턴스
- AMD 또는 Intel High Performance 인스턴스 최저 $6 - 1vCPU, 1GB Memory, 2TB Bandwidth, 25GB NVMe
- 엣지
- 인스턴스
- Block Storage
- Object Storage (AWS S3 호환)
- Firewall
- Network
- Load Balancers
- Kubernetes
- Databases