본문 바로가기
개발/mysql

MySql 긴 글을 저장할때

by nicksoon 2024. 4. 15.
반응형

TEXT를 사용했는데 Data too long for column 이 떴어요 

MySQL 에서 글을 저장할때 각 크기와 문자의 길이에 따라 저장이 되기도 하고 "Data too long for column" 이라는 에러가 반환되기도 합니다. 

 

각각의 유형은 저장할 수 있는 데이터의 크기에 제한을 둡니다. Data too long for column 에러가 발생하면 데이터가 허용된 크기보다 크기 때문입니다.

 

문자열 종류와 크기가 어떻게 될까요? 

CHAR 최대 길이는 255 입니다.
VARCHAR 최대 길이는 65,535 입니다.
TEXT 최대 65,535 (2^16 - 1) 문자를 저장할 수 있는 BLOB 타입입니다.
MEDIUMTEXT 최대 16,777,215 (2^24 - 1) 문자를 저장할 수 있는 BLOB 타입입니다.
LONGTEXT 최대 4,294,967,295(2^32-1) 문자를 저장할 수 있는 BLOB 타입니다

 

여기서 저도 잘못 알고 있었는데 VARCHAR(255)는 한글 255자 저장하는 것 아닌가?

MySQL에서 VARCHAR(255)는 최대 255개의 문자를 저장할 수 있습니다. 그러나 이는 바이트 수가 아닌 문자 수를 나타냅니다.

한글 문자는 UTF-8 인코딩에서 3바이트를 차지합니다. 

따라서 VARCHAR(255) 필드는 한글로는 최대 85자까지 저장할 수 있습니다. (255 / 3 = 85)


한글 문자열을 저장할 때는 필드의 크기를 적절히 조정해야 합니다.

예를 들어, 한글 255자를 저장하려면 VARCHAR(765) (255 * 3 = 765) 필드를 사용해야 합니다.

 

저도 이 값을 잘못 세팅해 255자가 안 들어가 문제가 있었습니다.

반응형