데이터베이스의 제약 조건 중 NOT NULL 이란,
Null을 삽입할 수 없다는 뜻이지 공백이 안된다는 뜻이 아닙니다.
(ex. 공백 삽입 시도 --> VARCHAR는 공백 그대로 삽입, Date는 0000-00-00으로 대체 삽입, INT는 0으로 대체 삽입)
그러나 MariaDB 10.2.4 버전 부터는 NOT NULL 컬럼에 공백으로 삽입하려 하면
다음과 같은 에러가 발생 합니다.
- ERROR 1364 : Field '컬럼명' doesn't have a default value.
그 이유는 sql_mode를 확인해보면 (MariaDB 10.2.4 버전 부터)
SELECT @@sql_mode;
기본 값으로 다음 모드가 설정되어 있기 때문입니다.
기본 네 가지 모드 중 다음 모드가 오류 ERROR 1364 를 발생 시킵니다.
- STRICT_TRANS_TABLES
: 빈 공간으로 데이터를 입력할 경우, 자동으로 NULL로 삽입됩니다.
따라서 빈 공간으로 입력 시, NOT NULL이 지켜질 수 없습니다.
따라서 위 모드를 제외하고 모드를 재설정 해주면,
SET sql_mode = 'ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION';
INSERT 가 정상적으로 실행됩니다 :)
Reference. https://mariadb.com/kb/en/sql-mode/
'Programming' 카테고리의 다른 글
[스프링 입문 강의 추천 - 스진초7기] Spring과 진짜 초면인 우리의 배달 어플 API 만들기 (25) | 2023.02.14 |
---|---|
맥 node.js 설치 (맥북 M1, 3분만에 설치하기) :: 송코딩 (0) | 2022.11.22 |
맥 도커 Mariadb 한글 깨짐 0.1초만에 해결 :: 송코딩 (0) | 2022.11.20 |
[IntelliJ] 자주 쓰이는 단축키 :: 송코딩 (0) | 2022.10.03 |
[DB] MariaDB 주요 쿼리 :: 송코딩 (0) | 2022.09.10 |