DBAtlas · 데이터베이스 운영 아틀라스

1364: Field 'name' doesn't have a default value (필드에 기본값 없음)

MySQL

의미

DEFAULT 없이 NOT NULL로 정의된 컬럼에 값을 지정하지 않고 행을 삽입했다. strict SQL 모드에서 MySQL은 누락된 필수 컬럼을 자동으로 채울 수 없어 오류를 발생시킨다.

원인

필수(NOT NULL, DEFAULT 없음) 컬럼이 INSERT에서 누락되었고 sql_mode에 STRICT_TRANS_TABLES/STRICT_ALL_TABLES가 활성화되어 있다. 이전의 관대한 모드용으로 작성된 애플리케이션을 strict 모드가 활성화된 서버로 옮기면 이 오류가 발생한다.

해결 방법

INSERT에 누락된 컬럼의 값을 추가하거나 컬럼에 적절한 DEFAULT를 정의한다: ALTER TABLE my_table MODIFY my_column ... NOT NULL DEFAULT 'value'; 컬럼이 실제로 선택 사항이라면 NULL을 허용한다. 임시/호환성 우회책으로 sql_mode를 완화할 수 있지만 데이터 품질을 위해 strict 모드 유지를 권장한다.

DBAtlas에서 열기 →

같은 데이터베이스의 다른 항목