본문 바로가기
개발&프로그래밍

[MySQL] "Integer display width is deprecated" 경고 메시지 이해하기

by 재아군 2025. 2. 7.

MySQL "Integer display width is deprecated" 경고 메시지 이해하기

 

경고(warning) 메시지 해석

Warning | 1681 | Integer display width is deprecated and will be removed in a future release.

이 경고 메시지는 MySQL 8.0에서 정수형 데이터 타입에 표시 너비를 지정하는 것이 더 이상 사용되지 않으며(deprecated), 향후 버전에서 제거될 예정이라는 것을 알려주는 메시지다.

 

 

기존 사용 방식

과거의 표시 너비 지정 방식

-- 표시 너비를 지정한 방식
CREATE TABLE users (
    id INT(11),
    age INT(3),
    score TINYINT(2)
);

여기서 괄호 안의 숫자(11, 3, 2)는 표시 너비(display width)를 의미했다. 하지만 이는 실제 저장할 수 있는 값의 범위와는 무관했다.

 

 

새로운 권장 방식

현재 권장되는 방식

-- 권장되는 방식
CREATE TABLE users (
    id INT,
    age INT,
    score TINYINT
);

정수형 타입별 실제 저장 범위

TINYINT   : -128 to 127 (또는 0 to 255 unsigned)
SMALLINT  : -32768 to 32767
INT       : -2147483648 to 2147483647
BIGINT    : -9223372036854775808 to 9223372036854775807

 

 

주의사항

  1. 기존 코드 영향
    • 기존 코드는 계속 작동함
    • 새로운 코드 작성 시 표시 너비 지정 제외
  2. 마이그레이션 고려사항
    • 테이블 정의 업데이트 고려
    • 애플리케이션 코드 확인

 

 

해결 방법

1. 새로운 테이블 생성 시

-- 올바른 방법
CREATE TABLE new_table (
    id INT,
    quantity INT UNSIGNED,
    small_number TINYINT
);

 

2. 기존 테이블 수정 시

-- 필요한 경우 타입 변경
ALTER TABLE existing_table
MODIFY COLUMN id INT;

 

 

실무 팁

  • 새로운 프로젝트에서는 표시 너비를 지정하지 않는 것이 좋다
  • 기존 프로젝트는 당장 수정할 필요는 없으나, 점진적 업데이트를 고려한다

 

댓글