Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL 데이터베이스 문자 집합과 데이터 정렬을 UTF-8로 변환하는 완벽 가이드

MySQL에서 데이터베이스의 문자 집합(character set)과 데이터 정렬(collation)을 UTF-8로 변환하는 작업은 다국어 데이터를 안정적으로 저장하기 위해 반드시 거쳐야 하는 과정입니다. 이 글에서는 현재 설정된 문자 집합을 확인하는 방법부터 실제 변환까지 단계별로 살펴보겠습니다.

1단계: MySQL 버전 확인

먼저 version() 함수를 사용해 현재 사용 중인 MySQL 버전을 확인합니다. 문자 집합 관련 동작은 버전에 따라 차이가 있을 수 있으므로 사전 확인이 좋습니다.

mysql> SELECT version();

실행 결과는 다음과 같습니다.

+-----------+
| version() |
+-----------+
| 8.0.12    |
+-----------+
1 row in set (0.00 sec)

위 출력을 통해 현재 8.0.12 버전이 사용 중임을 알 수 있습니다.

2단계: 현재 문자 인코딩 확인

다음으로, 데이터베이스와 테이블에 적용된 현재 문자 집합을 확인해야 합니다. information_schema를 조회하는 아래 쿼리를 사용하면 됩니다.

SELECT CCSA.character_set_name 
FROM information_schema.`TABLES` T,
     information_schema.`COLLATION_CHARACTER_SET_APPLICABILITY` CCSA 
WHERE CCSA.collation_name = T.table_collation 
  AND T.table_schema = "yourDatabaseName" 
  AND T.table_name = "yourTableName";

실제로 'sample' 데이터베이스의 'mytable' 테이블에 적용해 보겠습니다.

mysql> SELECT CCSA.character_set_name FROM information_schema.`TABLES`T,information_schema.`COLLATION_CHARACTER_SET_APPLICABILITY` CCSA WHERE CCSA.collation_name = T.table_collation AND T.table_schema = "sample" AND T.table_name = "mytable";

실행 결과:

+--------------------+
| CHARACTER_SET_NAME |
+--------------------+
| utf8mb4            |
+--------------------+
1 row in set (0.00 sec)

조회 결과 해당 테이블은 현재 utf8mb4 문자 집합을 사용하고 있는 것으로 나타납니다.

3단계: 데이터베이스를 UTF-8로 변경

이제 ALTER DATABASE 문을 사용해 데이터베이스의 기본 문자 집합과 데이터 정렬을 utf8로 설정할 수 있습니다.

mysql> ALTER DATABASE sample CHARACTER SET utf8 COLLATE utf8_general_ci;
Query OK, 1 row affected, 1 warning (0.27 sec)

4단계: 변경 결과 검증

변경이 올바르게 적용되었는지 동일한 쿼리로 다시 확인해 보겠습니다.

mysql> SELECT CCSA.character_set_name FROM information_schema.`TABLES`T,information_schema.`COLLATION_CHARACTER_SET_APPLICABILITY` CCSA WHERE CCSA.collation_name = T.table_collation AND T.table_schema = "sample" AND T.table_name = "mytable";

실행 결과:

+--------------------+
| CHARACTER_SET_NAME |
+--------------------+
| utf8mb4            |
+--------------------+
1 row in set (0.00 sec)

알아두면 좋은 점

데이터베이스 기본 문자 집합을 변경했는데도 테이블 조회 결과가 여전히 utf8mb4로 표시되는 것은 정상적인 현상입니다. 테이블 수준의 문자 집합 설정이 데이터베이스 기본값보다 우선하기 때문입니다. 즉, ALTER DATABASE는 이미 생성된 테이블에는 영향을 주지 않으며, 이후 새로 생성되는 테이블에만 기본값으로 적용됩니다.

기존 테이블까지 함께 변환하려면 아래와 같이 ALTER TABLE ... CONVERT TO CHARACTER SET 구문을 테이블별로 실행해야 합니다.

mysql> ALTER TABLE mytable CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

이처럼 버전 확인 → 현재 문자 집합 점검 → 데이터베이스 변경 → 결과 검증의 순서로 진행하면 MySQL 환경의 문자 집합을 체계적으로 UTF-8로 전환할 수 있습니다.