[MySQL] TEXT Column cannot set default value

2023. 8. 12. 08:15·스터디/Database
728x90

text 타입을 가지는 컬럼의 default 값을 설정하려고 할 때 "TEXT Column cannot set default value" 이라는 에러가 발생하여 그 원인을 찾아보았습니다!

 

 

TEXT 컬럼 default value 설정

CREATE TABLE `test_table` (
  `col1` INT(11) NOT NULL AUTO_INCREMENT,
  `col2` TEXT,
  `col3` INT(11) DEFAULT NULL,
  `col4` TINYINT(1) DEFAULT '0',
  PRIMARY KEY (`col1`)
);

먼저 위와 같은 쿼리로 test_table을 생성합니다.

 

ALTER TABLE `table1` change `col2` `col2` text  default '';

col2 컬럼의 디폴트 값을 empty string 인 ''로 바꾸어 봅니다.

위 쿼리를 수행하면 아래와 같은 에러메시지가 발생하는 것을 확인할 수 있는데요!

BLOB, TEXT, GEOMETRY or JSON column 'col2' can't have a default value.

 

그 이유는 다음과 같습니다.

 

  • MySQL 데이터베이스에서 BLOB, TEXT, GEOMETRY 또는 JSON 형식의 열이 기본값을 가질 수 없다는 것을 나타냅니다.
  • MySQL에서 BLOB, TEXT, GEOMETRY 또는 JSON 형식의 열은 매우 큰 데이터를 저장할 수 있는 유형으로 간주됩니다. 이러한 유형의 열은 일반적으로 기본값을 가질 수 없습니다.
  • 기본값을 저장하려면 열의 크기를 사전에 지정해야 하기 때문입니다.
  • 그러나 BLOB, TEXT, GEOMETRY 또는 JSON 열은 가변 길이 데이터를 저장할 수 있으며, 크기가 고정되어 있지 않습니다.
  • 따라서 MySQL에서는 이러한 유형의 열에 대한 기본값을 설정할 수 없도록 제한하고 있습니다.

즉, ALTER TABLE 문에서 col2 열의 데이터 형식을 TEXT로 변경하면서 동시에 기본값을 빈 문자열('')로 설정하려고 했기 때문에 위와 같은 에러가 발생했습니다. col2 열에 기본값을 설정하려면 BLOB, TEXT, GEOMETRY 또는 JSON 형식을 사용하지 않아야 합니다.

 

만약 default 값으로 ''를 설정하고 싶다면 컬럼의 타입을 varchar 로 설정해주어야합니다.

 

 

참고 문서

https://dev.mysql.com/doc/refman/8.0/en/blob.html#idm140312903326336

https://stackoverflow.com/questions/3466872/why-cant-a-text-column-have-a-default-value-in-mysql

https://stackoverflow.com/questions/16141727/change-text-column-default-from-null-to-empty-string

728x90
저작자표시 비영리 변경금지 (새창열림)

'스터디 > Database' 카테고리의 다른 글

[MySQL] PK 컬럼 순서와 Index  (0) 2024.07.13
[MySQL] 대용량 테이블 스키마 변경하기  (0) 2024.04.14
[DB] MySQL CharacterSet과 Collation  (0) 2022.11.12
[MySQL] 다중 테이블 업데이트, 여러 테이블 update 하기  (1) 2022.10.06
[DB] ACID란?  (0) 2021.07.04
'스터디/Database' 카테고리의 다른 글
  • [MySQL] PK 컬럼 순서와 Index
  • [MySQL] 대용량 테이블 스키마 변경하기
  • [DB] MySQL CharacterSet과 Collation
  • [MySQL] 다중 테이블 업데이트, 여러 테이블 update 하기
zoodi
zoodi
IT/개발 관련 지식을 기록하는 블로그입니다.
  • zoodi
    오늘의 기록
    zoodi
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 후기
        • 컨퍼런스
        • 일상리뷰
      • 금융경제
        • 뉴스
        • 금융IT용어
        • 경제 및 부동산
      • 코딩 테스트
      • 스터디
        • JAVA
        • Kotlin
        • Spring
        • React, Nextjs
        • 인공지능 AI
        • Cloud & k8s
        • Kafka
        • Database
        • Network
        • Algorithm
        • Hadoop
        • LINUX
        • R Programming
        • 기타 (소공, 보안)
      • 도서
      • 기타
  • 블로그 메뉴

    • 홈
    • 스터디
    • 금융경제
    • 후기
    • 기타
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    코테
    pythoncodingtest
    이분탐색
    금융용어
    C++
    CodingTest
    코딩테스트
    codility
    springboot
    db
    리트코드
    java
    Kotlin
    자바
    알고리즘
    네트워크
    쿠버네티스
    MySQL
    코테공부
    스프링
    스프링부트
    kafka
    카카오코테
    자료구조
    Python
    코딜리티
    LeetCode
    프로그래머스
    코딩
    Spring
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
zoodi
[MySQL] TEXT Column cannot set default value
상단으로

티스토리툴바