niepoprawna wartość domyślna (mysql 5.7) dla pola znacznika czasu

10

EDYCJA: Podczas aktualizacji istniejącej bazy danych z mysql 5.6 i wykonywania:

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

Daje to:

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

Działa to w mysql <= 5,7. Nie mogłem znaleźć dokumentacji na ten temat ... Na czym polega problem?

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;
Chris Muench
źródło
1
Ten problem jest udokumentowany ... ale po pierwsze, której wersji MySQL 5.7 używasz (szczególnie istotne, ponieważ 5.7 nie jest jeszcze GA)? i wprowadzono źle pomyślaną zmianę w 5.7.4, która została cofnięta w 5.7.8, co by to wyjaśniało. Potwierdź swoją wersję.
Michael - sqlbot
mysql-5.7.8-rc-osx10,9-x86_64.dmg
Chris Muench
Opublikowałem edycję z innym problemem. Wydaje się, że to prawdziwy problem z mysql 5.7.8
Chris Muench
2
Dalszy przegląd informacji o wersji 5.7.8 sugeruje, że jedna zmiana została cofnięta, ale może być konieczne jej usunięcie NO_ZERO_DATE, co jest teraz częścią domyślnej konfiguracji. Czy możesz potwierdzić? Proszę SELECT @@SQL_MODE;.
Michael - sqlbot
Tak, zmieniłem tryb i to zadziałało. Znalazłem wiele rzeczy dodanych przez mysql 5.7, które spowodowały problem, więc ustawiłem tryb na „”; wydaje się to dość dużą aktualizacją z dużą ilością zmian.
Chris Muench,

Odpowiedzi: