nilai default tidak valid (mysql 5.7) untuk bidang cap waktu

10

EDIT: Saat memperbarui basis data yang ada dari mysql 5.6 dan menjalankan:

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

Ini menghasilkan:

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

Ini berfungsi di mysql <= 5.7. Saya tidak dapat menemukan dokumentasi tentang ini ... Apa masalah dengan ini?

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
sumber
1
Masalah ini didokumentasikan ... tapi pertama, rilis MySQL 5.7 mana yang Anda gunakan (khususnya relevan, karena 5.7 belum GA hingga sekarang)? dan ada perubahan yang disalahpahami yang diperkenalkan di 5.7.4 yang dikembalikan pada 5.7.8, yang akan menjelaskan hal ini. Harap konfirmasi versi Anda.
Michael - sqlbot
mysql-5.7.8-rc-osx10.9-x86_64.dmg
Chris Muench
Saya memposting hasil edit dengan masalah lain. Ini sepertinya masalah nyata dengan mysql 5.7.8
Chris Muench
2
Tinjauan lebih lanjut dari catatan rilis 5.7.8 menunjukkan bahwa satu perubahan telah dikembalikan, tetapi Anda mungkin perlu menghapus NO_ZERO_DATE, yang sekarang merupakan bagian dari konfigurasi default. Bisakah kamu mengkonfirmasi? Tolong SELECT @@SQL_MODE;.
Michael - sqlbot
Ya saya mengubah mode dan itu berhasil. Saya menemukan banyak hal yang ditambahkan mysql 5.7 yang menyebabkan masalah jadi saya mengatur mode ke ""; ini sepertinya pembaruan yang cukup besar dengan banyak perubahan.
Chris Muench

Jawaban: