ค่าเริ่มต้นที่ไม่ถูกต้อง (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

ฉันโพสต์การแก้ไขด้วยปัญหาอื่น ดูเหมือนว่าเป็นปัญหาจริงกับ mysql 5.7.8
Chris Muench

2
การตรวจสอบเพิ่มเติมของบันทึกประจำรุ่น 5.7.8แสดงให้เห็นว่ามีการเปลี่ยนแปลงหนึ่งรายการ แต่คุณต้องลบออกNO_ZERO_DATEซึ่งตอนนี้เป็นส่วนหนึ่งของการกำหนดค่าเริ่มต้น คุณยืนยันได้ไหม SELECT @@SQL_MODE;กรุณา
Michael - sqlbot

ใช่ฉันเปลี่ยนโหมดและใช้งานได้ ฉันพบสิ่งต่าง ๆ มากมายที่ mysql 5.7 เพิ่มซึ่งทำให้เกิดปัญหาดังนั้นฉันจึงตั้งโหมดเป็น ""; ดูเหมือนว่าเป็นการอัปเดตที่ยิ่งใหญ่พร้อมการเปลี่ยนแปลงมากมาย
Chris Muench

คำตอบ:


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.