может ли php7-fpm strtotime когда-либо считать эту дату '10/10/2019 13:54:21' неверной информацией из-за нагрузки на сервер? - PullRequest
1 голос
/ 05 апреля 2019

База данных mysql (5.7.25-0ubuntu0.18.04.2 (Ubuntu)) сообщает, что вместо '2019-04-10 13:54:21 я вставляю' 1969-12-31 16:00:00 ' 'в таблицу в базе данных.

Однако, поскольку есть доказательства того, что запрос, который попал на сервер apache2.4, а затем был обработан работниками php7-fpm, включил эту дату «10/10/2019 13:54:21».

Меня удивляет, почему он не вошел в базу данных, например, «2019-04-10 13:54:21». После того, как этот код побежал:

date('Y-m-d H:i:s', strtotime('4/10/2019 13:54:21'));

Эта запись поступает в таблицу с помощью хранимой процедуры, однако я проверил, что параметры введены правильно, так как другая дата прошла в порядке.

new_record | ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION | CREATE DEFINER=`user`@`localhost` PROCEDURE `new_record`(
IN p_account_id integer,
IN p_order_id integer,
IN p_unit_id integer,
IN p_begin_date datetime,
IN p_end_date datetime,
IN p_duration integer,
IN p_status integer
)
BEGIN
    INSERT INTO schedule
    (
        schedule_id,
        orders_id,
        units_id,
        schedule_begintime,
        schedule_endtime,
        duration,
        status_id
    )
    SELECT 0, p_order_id, p_unit_id, p_begin_date, p_end_date, p_duration, p_status
    FROM units AS u
    JOIN properties AS p ON(p.properties_id = u.properties_id)
    WHERE u.units_id = p_unit_id AND p.owners_id = p_account_id;
    SELECT LAST_INSERT_ID() as post_id;
    COMMIT;
END | utf8                 | utf8_general_ci      | utf8_general_ci

Создать таблицу для рассматриваемой таблицы выглядит следующим образом:

| schedule | CREATE TABLE `schedule` (
  `schedule_id` int(11) NOT NULL AUTO_INCREMENT,
  `orders_id` int(11) NOT NULL DEFAULT '0',
  `units_id` int(11) NOT NULL DEFAULT '0',
  `status_id` int(11) NOT NULL DEFAULT '1',
  `schedule_begintime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `schedule_endtime` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `duration` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`schedule_id`),
  KEY `orders_id` (`orders_id`),
  KEY `units_id` (`units_id`),
  KEY `status_id` (`status_id`),
  KEY `schedule_begintime` (`schedule_begintime`),
  KEY `schedule_endtime` (`schedule_endtime`)
) ENGINE=InnoDB AUTO_INCREMENT=58 DEFAULT CHARSET=utf8

Любопытство заставляет меня писать здесь, так как я не могу думать о:

Почему дата не будет принята как действительная в strtotime? Mysql вставляет дату по умолчанию там? Существует модификация массива, в которой находится это значение даты, но нет модификации этого конкретного ключа?

Другая странность заключается в том, что это происходит только для одного из пользователей.

Кто-нибудь испытывал подобные проблемы? Могут ли они произойти из-за нагрузки на сервер?

...