Query Error 1525: Incorrect DATETIME value: '0000-00-00 00:00:00' Принято

1

OS: Linux 5.4.0-54-generic #60-Ubuntu x86_64 GNU/Linux

MySQL: 8.0.22-0ubuntu0.20.04.2

При переходе на страницу "Магазин" -> "Отчёты" получил ошибку:

Query Error 1525: Incorrect DATETIME value: '0000-00-00 00:00:00' Query: SELECT MIN(create_datetime)        FROM shop_order        WHERE create_datetime > '0000-00-00 00:00:00'

Возникла из-за некорректно указанной даты в запросе. Решить можно 2 способами:

1. Прописать в MySQL

SET SQL_MODE='ALLOW_INVALID_DATES'; 

2. Изменить запрос в файле

wa-apps/shop/lib/actions/reports/shopReportsSales.action.php(771)

указав корректную дату. 

Я выбрал второй способ, ибо считаю это ошибкой запроса, а не самой MySQL. Полученный запрос:

SELECT MIN(create_datetime) FROM shop_order WHERE create_datetime > '1970-01-01 00:00:00'

Сорян, если тема уже подымалась. При беглом поиске не нашёл.

4 комментария

  • +2
    konstantinsorokin konstantinsorokin 4 декабря 2020 17:22 #

    Тоже столкнулся с подобной проблемой.


    1. Решение к сожаление не помогло 

    SET SQL_MODE='ALLOW_INVALID_DATES'; 

    2. По адресу, в файле (последние обновления на 4 декабря 2020) вообще ничего нет по поиску "create_datetime"

    wa-apps/shop/lib/actions/reports/shopReportsSales.action.php(771)

    Помогите пожалуйста с решением.

    • +1
      Константин М. Константин М. 15 декабря 2020 13:17 #

      Прошу прощения, похоже уже был уставшим. Спасибо, что указали. 

      Действительно, правил метод `getMinDate()` в файле wa-apps/shop/lib/model/shopOrder.model.php (строка 773)

    • +1
      konstantinsorokin konstantinsorokin 4 декабря 2020 17:24 #

      Query Error 1525: Incorrect DATETIME value: '0000-00-00 00:00:00'
      Query: SELECT MIN(create_datetime)
      FROM shop_order
      WHERE create_datetime > '0000-00-00 00:00:00' code 1525
      
      ## wa-system/database/waModel.class.php(266)
      #0 wa-system/database/waModel.class.php(366): waModel->run()
      #1 wa-apps/shop/lib/model/shopOrder.model.php(782): waModel->query()
      #2 wa-apps/shop/lib/model/shopSales.model.php(56): shopOrderModel->getMinDate()
      #3 wa-apps/shop/lib/actions/reports/shopReportsSales.action.php(41): shopSalesModel->getMinDate()
      #4 wa-system/controller/waViewAction.class.php(161): shopReportsSalesAction->execute()
      #5 wa-system/controller/waViewController.class.php(86): waViewAction->display()
      #6 wa-system/controller/waDefaultViewController.class.php(48): waViewController->executeAction()
      #7 wa-system/controller/waController.class.php(21): waDefaultViewController->execute()
      #8 wa-system/controller/waViewController.class.php(46): waController->run()
      #9 wa-system/controller/waFrontController.class.php(263): waViewController->run()
      #10 wa-system/controller/waFrontController.class.php(190): waFrontController->runController()
      #11 wa-system/controller/waFrontController.class.php(84): waFrontController->execute()
      #12 wa-system/controller/waDispatch.class.php(157): waFrontController->dispatch()
      #13 wa-system/controller/waDispatch.class.php(32): waDispatch->dispatchBackend()
      #14 wa-system/waSystem.class.php(603): waDispatch->dispatch()
      #15 index.php(7): waSystem->dispatch()
      #16 {main}
      GET
      
      [
        'module' => 'reports',
        'action' => 'sales',
        'timeframe' => '90',
        'groupby' => 'days',
      ]
      POST
      
      [
        '_csrf' => '[hidden]',
      ]
      Params
      
      []

    • +2
      konstantinsorokin konstantinsorokin 4 декабря 2020 17:34 #

      Не уверен что правильно, но если изменить в файле

      /wa-apps/shop/lib/model/shopSales.model.php (53)

      C

      static $date_start = null;

      На

      static $date_start = '1970-01-01 00:00:00';

      То все заработает.

      Конечный код

          public function getMinDate()
          {
              static $date_start = '1970-01-01 00:00:00';
              if ($date_start === null) {
                  $order_model = new shopOrderModel();
                  $date_start = $order_model->getMinDate();
              }
              return $date_start;
          }

      Добавить комментарий

      Чтобы добавить комментарий, зарегистрируйтесь или войдите