MySQL 생성되어 있는 테이블의 필드 인코딩 변경해보기

Woody의 기록·2023년 8월 12일
1

Database

목록 보기
2/2
post-custom-banner

데이터베이스를 사용하다보면 컬럼의 인코딩이 utf8 이 아니어서 VARCHAR 타입의 컬럼에 한글을 포함한 데이터를 넣는 경우 오류가 날 때가 있다.

mysql을 설치하면 생성되는 기본 데이터베이스인 information_schema가 각 스키마 내의 테이블 컬럼들의 메타 데이터를 가지고 있는데, information_schema 내에도 여러가지 테이블로 구분되어 메타 데이터를 저장하고 있다.

information_schema 에 어떤 테이블이 존재하는지는 다음 명령어로 살펴볼 수 있다.

USE information_schema;
SHOW TABLES;

아래는 실행 결과이다.

자세히 보면 information_schema가 가지고 있는 테이블중에는 COLUMNS 라는 이름의 테이블이 있는데, 여기에 데이터베이스내에 각 테이블이 가지는 컬럼들의 인코딩 정보가 포함되어 있다.

아래의 명령어로 COLUMNS 내에 어떤 정보들이 포함되어 있는지 자세히 살펴보자.

SELECT * FROM COLUMNS;

수많은 row 중에서 자신이 만든 데이터베이스와 테이블이 있다면 해당 정보도 포함된 것을 찾아볼 수 있다.
COLUMNS 테이블의 속성중 CHARATER_SET_NAMECOLLATION_NAME을 확인하면 인코딩만 빠르게 확인해 볼 수 있다.

아래 명령어는 위의 과정을 한번에 할 수 있는 쿼리이다. WoodyDB 라는 이름의 데이터베이스에 있는 member_table의 각 필드가 어떤 인코딩으로 설정되어 있는지 예시이다.

SELECT column_name, character_set_name, collation_name 
FROM information_schema.columns
WHERE table_schema = 'WoodyDB' AND TABLE_NAME='member_table';

만약 특정 인코딩으로 변경하고자 한다면 아래와 쿼리를 통해 변경할 수 있다.
(예시) member_table의 member_id 컬럼의 인코딩을 utf8로 변경하고자 하는 경우

ALTER TABLE member_table
MODIFY member_id VARCHAR(255) CHARACTER SET utf8;
profile
Github - https://www.github.com/woody35545
post-custom-banner

0개의 댓글