타임 스탬프 필드에 유효하지 않은 기본값 (mysql 5.7)


10

편집 : mysql 5.6에서 기존 데이터베이스를 업데이트하고 실행할 때 :

UPDATE phppos_register_log SET shift_end = '2015-01-01 00:00:00' WHERE shift_end = '0000-00-00 00:00:00';

이것은 다음을 생성합니다.

#1292 - Incorrect datetime value: '0000-00-00 00:00:00' for column 'shift_end' at row 1
#1067 - Invalid default value for 'shift_start' 

이것은 mysql <= 5.7에서 작동했습니다. 이것에 관한 문서를 찾을 수 없습니다 ...이 문제는 무엇입니까?

CREATE TABLE `phppos_register_log` (
      `register_log_id` int(10) NOT NULL AUTO_INCREMENT,
      `employee_id_open` int(10) NOT NULL,
      `employee_id_close` int(11) DEFAULT NULL,
      `register_id` int(11) DEFAULT NULL,
      `shift_start` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
      `shift_end` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
      `open_amount` decimal(23,10) NOT NULL,
      `close_amount` decimal(23,10) NOT NULL,
      `cash_sales_amount` decimal(23,10) NOT NULL,
      `total_cash_additions` decimal(23,10) NOT NULL DEFAULT '0.0000000000',
      `total_cash_subtractions` decimal(23,10) NOT NULL DEFAULT '0.0000000000',
      `notes` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
      `deleted` int(1) NOT NULL DEFAULT '0',
      PRIMARY KEY (`register_log_id`),
      KEY `phppos_register_log_ibfk_1` (`employee_id_open`),
      KEY `phppos_register_log_ibfk_2` (`register_id`),
      KEY `phppos_register_log_ibfk_3` (`employee_id_close`),
      CONSTRAINT `phppos_register_log_ibfk_1` FOREIGN KEY (`employee_id_open`) REFERENCES `phppos_employees` (`person_id`),
      CONSTRAINT `phppos_register_log_ibfk_2` FOREIGN KEY (`register_id`) REFERENCES `phppos_registers` (`register_id`),
      CONSTRAINT `phppos_register_log_ibfk_3` FOREIGN KEY (`employee_id_close`) REFERENCES `phppos_employees` (`person_id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

1
이 문제 문서화되었지만 ... 먼저, 어떤 MySQL 5.7 릴리스 를 사용하고 있습니까 (특히 5.7이 아직 GA가 아니기 때문에 특히 관련이 있습니까?) 5.7.4에서 도입 된 잘못된 변경이 5.7.8에서 되돌려 져서이를 설명합니다. 버전을 확인하십시오.
Michael-sqlbot

mysql-5.7.8-rc-osx10.9-x86_64.dmg
Chris Muench 5

다른 문제로 편집 내용을 게시했습니다. 이것은 MySQL은 5.7.8와 실제 문제처럼 보인다
크리스 MUENCH에게

2
5.7.8 릴리스 정보를 자세히 검토 하면 한 가지 변경 사항이 되돌려졌지만 NO_ZERO_DATE이제 기본 구성의 일부인 을 제거해야 할 수도 있습니다. 확인 할수 있어요? 하십시오 SELECT @@SQL_MODE;.
Michael-sqlbot 2016 년

예, 모드를 변경했으며 작동했습니다. mysql 5.7이 추가하여 많은 문제가 발생하여 모드를 ""로 설정했습니다. 이것은 많은 변경 사항이있는 꽤 큰 업데이트처럼 보입니다.
Chris Muench

답변:


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.