반응형
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자가 안 들어가 문제가 있었습니다.
반응형