MySQL database 와 table 의 character set encoding 확인하는 법
MySQL 은 Database, Table, Column 마다 각각 character set encoding 을 설정할 수 있으므로 테이블이나 컬럼이 다른 인코딩으로 되어 있어서 한글 문제가 발생할 경우 원인을 찾기가 어려울 수 있습니다.
database 명이 mydb 이고 table 명이 mytable 일때 데이타베이스와 테이블의 문자 집합 확인하는 방법에 대해서 설명합니다.
Schema 조회
database 확인
database 의 인코딩은 다음 쿼리로 확인할 수 있습니다.
SELECT default_character_set_name, DEFAULT_COLLATION_NAME FROM information_schema.SCHEMATA WHERE schema_name = "mydb";
+----------------------------+------------------------+ | DEFAULT_CHARACTER_SET_NAME | DEFAULT_COLLATION_NAME | +----------------------------+------------------------+ | utf8mb4 | utf8mb4_0900_ai_ci | +----------------------------+------------------------+ 1 row in set (0.00 sec)
table 확인
table 의 인코딩을 출력하는 쿼리입니다.
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 = "mydb" AND T.table_name = "mytable";
MySQL 8 에서는 제대로 동작하지 않습니다.
column 확인
컬럼마다 인코딩을 달리 할 필요는 없겠지만 혹시 모르니 다음 쿼리로 컬럼의 인코딩을 확인할 수 있습니다.
SELECT COLUMN_NAME, character_set_name,COLLATION_NAME FROM information_schema.`COLUMNS` C WHERE table_schema = "mydb" AND table_name = "mytable" AND column_name = "mycolumn";
Show 명령어 사용(추천)
가장 쉽고 간편한 명령어로 결과중에 Collation 컬럼을 확인해 보면 됩니다.
SHOW FULL COLUMNS FROM mytable;
DB 와 Table 생성문 조회
show create 구문으로 db 나 table 을 생성한 DDL 을 확인할 수 있으므로 DDL 실행시 지정한 encoding 을 확인합니다.
SHOW CREATE DATABASE mydb;
table 생성 DDL 은 아래 명령으로 확인할 수 있습니다.
show create table mytable;