SQL
[SQL/Error] 필드타입 변경 : TEXT길이 연장하기
발달중인 망고
2024. 3. 10. 00:40
필드 타입 변경 : TEXT길이 연장하기
데이터베이스를 사용하면서 특정 필드의 데이터 타입이나 길이를 변경해야 할 상황이 자주 발생합니다. 특히, 이번 올림 프로젝트에서 ADMIN계정에서 입력 데이터를 저장하는 caption 필드의 길이를 늘여야 할 때, 여러 접근 방법을 통해 이를 효과적으로 관리하는 방법을 정리해놓으려 합니다.
✅ 관련코드를 분석해본 결과 문제는 VARCHAR(255)의 타입을 갖고 있어서 발생했습니다.
해결방법
1-1 수동으로 SQL 실행하기
가장 기본적이고 직접적인 방법은 SQL ALTER TABLE 명령어를 실행하는 것입니다. 이를 통해 필드 타입을 변경하거나 길이를 조정할 수 있습니다. 예를 들어, caption 필드의 길이를 1000자로 늘리고 싶을 때 다음과 같은 SQL 명령어를 사용합니다. 저는 1000자로 여유롭게 해 놨습니다.
ALTER TABLE album
MODIFY COLUMN caption VARCHAR(1000);
1-2 TEXT로 변경하기
ALTER TABLE album
MODIFY COLUMN caption TEXT;
✅ 여기서 텍스트는 무엇인가? 의문이 들어 아래에 정리하였습니다.
TEXT:
- TEXT 타입은 매우 큰 데이터를 저장할 수 있는데, MySQL에서 TEXT 타입은 최대 65,535 바이트(약 64KB)의 데이터를 저장할 수 있습니다. 필요에 따라 MEDIUMTEXT(최대 16,777,215 바이트, 약 16MB) 또는 LONGTEXT(최대 4,294,967,295 바이트, 약 4GB)를 사용할 수 있습니다.
- TEXT 타입은 큰 텍스트 데이터나, 글이나 설명과 같이 긴 문자열을 저장하는 데 적합합니다.
- TEXT 필드는 보통 별도의 저장 공간에 저장되며, 풀 텍스트 인덱싱을 제외하고는 일반 인덱스를 사용할 수 없습니다. 따라서 검색과 인덱싱에 있어 VARCHAR보다 제약이 많습니다.
- 큰 데이터를 다룰 때 TEXT 타입을 사용하면 메모리 사용량과 성능에 영향을 줄 수 있어 주의가 필요합니다.
결론
- 짧은 문자열을 다루고, 데이터베이스의 성능을 최적화하고 싶다면 VARCHAR를 사용하는 것이 좋습니다.
- 매우 긴 텍스트를 저장해야 하고, 길이가 가변적이거나 예측할 수 없는 경우 TEXT 타입을 사용하는 것이 적합합니다.
데이터의 특성과 애플리케이션의 요구 사항에 따라 적절한 타입을 선택하는 것이 중요합니다. 처음 설계할 때 길어질 것 같은 칼럼을 찾고 미리 어노테이션을 설정해 주는 것이 좋아 보입니다 ㅎㅎ,
@Entity
public class Album {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
...
@Column(length = 1000)
private String caption;
...
}
감사합니다!!😋