타임 스탬프에 시간을 추가하기 위해 MySQL의 모든 행 업데이트 : "Column 'start'cannot be null"

한스 웨스트 만

datetime이고 null 일 수없는 "start_date"라는 열이 포함 된 테이블이 있습니다. 하나의 단일 업데이트 쿼리에서 모든 날짜 시간에 한 시간을 추가하고 싶지만 오류 메시지가 나타납니다.Column 'start_date' cannot be null

MySQL 5.7.17과 다음 쿼리를 사용하고 있습니다.

UPDATE tbl_event SET start_date = DATE_ADD(start_date, INTERVAL 1 HOUR);

한 행에서 수행 할 때는 잘 작동하지만 모두 변경하고 싶을 때는 작동하지 않습니다. 여기에 뭔가 빠졌나요?

편집 : 다음은 테이블의 생성 구문입니다.

CREATE TABLE `tbl_event` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `created_by` int(11) DEFAULT NULL,
  `name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `start_date` datetime NOT NULL,
  `end_date` datetime NOT NULL,
  PRIMARY KEY (`id`),
  KEY `FK_EVENT_CREATED_BY` (`created_by`),
  CONSTRAINT `FK_EVENT_CREATED_BY` FOREIGN KEY (`created_by`) REFERENCES `tbl_user` (`id`) ON DELETE SET NULL,
) ENGINE=InnoDB AUTO_INCREMENT=442 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
맷 깁슨

매우 이상한 일이 일어나지 않는 한, 문제를 일으킬 수있는 유일한 것은 start_date한 시간을 추가하면 NULL이 생성 될 수있는 값이 하나 이상 (NULL이 아닌) 값이있는 경우입니다.

datetime예를 들어 유효한 범위를 넘어 결과를 푸시 할 수있는 값이있을 수 있습니다 . 특정 MySQL 버전에서 문제를 재현 할 것이라고 생각합니다.

(이제 주석에서 명확하게했으며 GhostGambler가 제안한대로 값은 에서 0000-00-00 00:00:00생성하는 것을 포함하여 이상한 동작을 보이는 오래된 MySQL "제로 날짜"( ) 였습니다.)NULLDATE_ADD

문제를 일으키는 값이있는 행을 찾을 수 있습니다.

SELECT * FROM tbl_event WHERE DATE_ADD(start_date, INTERVAL 1 HOUR) IS NULL;

... 찾은 내용에 따라 데이터 또는 쿼리를 수정하는 작업을 수행합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관