mysql에서는 varchar(n)에 따라 입력 가능한 문자의 수가 제한됩니다
기본적으로 영어=1byte 한글=3byte이지만 mysql의 varchar은 n이 1character을 의미하기 때문에 영어든 한글이든 varchar(n) = 1글자가 됩니다
때문에 한글을 사용한다고 해서 n의 값을 늘릴 필요는 없습니다
예를 들어 users 테이블에서 사용자의 nickname을 입력받았다고 가정해보겠습니다.
이때 영어로는 정상적으로 입력되지만 한글로는 입력되지 않는 경우가 발생할 수 있습니다.
해당 오류는 DB, Table, Column의 Characterset과 관련이 있습니다.
DB, Table, Column의 CharacterSet을 확인하는 명령은 다음과 같습니다
SHOW CREATE DATABASE [DB명];
SHOW CREATE TABLE [Table명];
SHOW CREATE COLUMN [COLUMN명];
위의 사진은 Table의 ChareacterSet을 확인한 결과입니다.
만약 맨 마지막 부분(ENGINE=InncoDB ''')에서 DEFAULT CHARSET이 utf8 또는 utf8mb4가 아닌 다른 것으로 설정이 되어있다면 수정해주시면 됩니다.
또 상단의 Column에 해당하는 CharacterSet이 latin과 같은 것으로 설정되어있으면 똑같이 utf8로 수정을 하면 한글과 관련된 문제를 해결할 수 있습니다
테이블 CaracterSet수정
alter table [Table명] default character set = utf8;
칼럼 CaracterSet수정
alter table [Table명] modify column [Column명][컬럼Type] character set utf8 collate utf8_general_ci not null;
만약 위와 같이 설정을 했음에도 한글에 문제가 생겼다면
DB의 CharacterSet을 확인하거나 Table과 Column의 CharacterSet이 일치하는지 확인해야합니다