Tôi đã phát hiện ra sau khi nâng cấp lên MySQL 5.7 rằng lỗi này bắt đầu xảy ra trong các tình huống ngẫu nhiên, ngay cả khi tôi không cung cấp ngày trong truy vấn.
Điều này có vẻ là do trước đó phiên bản của các ngày được hỗ trợ MySQL như 0000-00-00 00:00:00
(theo mặc định) tuy nhiên 5.7.4 đã giới thiệu một số thay đổi đối với NO_ZERO_DATE
thiết lập. Nếu bạn vẫn có dữ liệu cũ khi sử dụng phiên bản MySQL mới hơn, thì các lỗi ngẫu nhiên có thể xuất hiện.
Tôi cần thực hiện một truy vấn như thế này để đặt lại tất cả các ngày bằng 0 thành một ngày khác.
# If the columns supports NULL, use that
UPDATE table SET date_column = NULL WHERE date_column < '1000-01-01';
# Otherwise supply another default date
UPDATE table SET date_column = '1970-01-01' WHERE date_column < '1000-01-01';
Ngoài ra, bạn có thể điều chỉnh NO_ZERO_DATE
cài đặt, mặc dù lưu ý những gì tài liệu nói về nó: