Почему возникает такая ошибка MySQL?

вот такой запрос
CREATE TABLE `main_documents` (
  `id` int(11) NOT NULL,
  `employee_id` int(11) DEFAULT NULL,
  `citizenship_id` int(11) DEFAULT NULL,
  `document_type_id` int(11) DEFAULT NULL,
  `first_name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `last_name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `middle_name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `birthday` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `hometown` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `issue_date` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  `expiration_date` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  `gender` int(11) DEFAULT NULL,
  `series` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `number` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `scan_id` int(11) DEFAULT NULL,
  `issued_by` text COLLATE utf8_unicode_ci
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

выдает такую ошибку
#1067 - Invalid default value for 'issue_date'

честно пытался гуглить но не смог понять в чем проблема
  • Вопрос задан
  • 1372 просмотра
Решения вопроса 2
timestamp NOT NULL DEFAULT '0000-00-00 00:00:00'
должен быть timestamp, 0000-00-00 00:00:00 - это не timestamp
Ответ написан
alexey-m-ukolov
@alexey-m-ukolov Куратор тега MySQL
Это невалидная дата, которая работала в старых версиях Mysql по недоразумению. В Mysql 8 это недоразумение можно исправить специальным флагом NO_ZERO_DATE, который у вас, судя по всему, включён.

А в 5.7 ещё был STRICT MODE.

Не говоря уже о том, что у вашей колонки тип timestamp.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы