현상
다음과 같이 정의된 테이블이 있다고 하자.
CREATE TABLE test (
id int NOT NULL,
diagnosis_date datetime NOT NULL DEFAULT current_timestamp,
PRIMARY KEY (id, diagnosis_date)
);
스키마에 의하면 diagnosis_date가 NOT NULL인데 데이터를 조회하면 아래와 같이 NULL로 세팅된 데이터가 존재했다.
SELECT diagnosis_date
FROM test
WHERE diagnosis_date IS NULL;
원인
사용하고 있는 Tool이 유효하지 않은 날짜 데이터를 처리하는 방식에 의한 결과일 수 있다. 이런 경우 mysql client를 이용하면 좀더 명확하게 확인할 수 있다.
mysql cli로 확인해보면 데이터가 유효하지 않은 날짜 범위인 '0000-00-00', '0000-00-00 00:00:00' 등으로 INSERT된 결과임을 확인할 수 있었다.