Ошибка #1064 Принято

2

Пользователь создал 2 заказа подряд, с разницей в несколько секунд, во втором заказе отображается только доставка, товаров нет. Такое было и раньше, удаляли просто заказ и всё. А теперь мы даже в него зайти не можем, выскакивает такая ошибка.

В db.log вот что:

2020-03-22 21:23:45 109.252.36.200
Query Error 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')
                GROUP BY pc.id
                ORDER BY pc.name' at line 5
Query: SELECT pc.*, GROUP_CONCAT(tc.type_id SEPARATOR ',') AS type_ids
                FROM shop_product_code AS pc
                    JOIN shop_type_codes AS tc
                        ON tc.code_id=pc.id
                        AND tc.type_id IN (0, )
                GROUP BY pc.id
                ORDER BY pc.name
## wa-system/database/waModel.class.php(266)
#0 wa-system/database/waModel.class.php(366): waModel->run('SELECT pc.*, GR...')
#1 wa-system/database/waDbStatement.class.php(229): waModel->query('SELECT pc.*, GR...')
#2 wa-system/database/waModel.class.php(346): waDbStatement->query(Array)
#3 wa-apps/shop/lib/model/shopProductCode.model.php(40): waModel->query('SELECT pc.*, GR...', Array)
#4 wa-apps/shop/lib/model/shopOrderItemCodes.model.php(33): shopProductCodeModel->getByType(Array)
#5 wa-apps/shop/lib/classes/shopOrder.class.php(772): shopOrderItemCodesModel->extendOrderItems(Array)
#6 wa-apps/shop/lib/classes/shopOrder.class.php(462): shopOrder->getItemsProductCodes()
#7 wa-apps/shop/lib/classes/shopOrder.class.php(606): shopOrder->__get('items_product_c...')
#8 wa-apps/shop/lib/workflow/shopWorkflowEditcodeAction.class.php(22): shopOrder->offsetGet('items_product_c...')
#9 wa-apps/shop/lib/workflow/shopWorkflowState.class.php(93): shopWorkflowEditcodeAction->isAvailable(Object(shopOrder))
#10 wa-apps/shop/lib/classes/shopOrder.class.php(856): shopWorkflowState->getActions(Object(shopOrder))
#11 wa-apps/shop/lib/classes/shopOrder.class.php(460): shopOrder->readActions()
#12 wa-apps/shop/lib/classes/shopOrder.class.php(907): shopOrder->__get('actions')
#13 wa-apps/shop/lib/classes/shopOrder.class.php(460): shopOrder->readWorkflowActionElements()
#14 wa-apps/shop/lib/actions/order/shopOrder.action.php(36): shopOrder->__get('workflow_action...')
#15 wa-system/controller/waViewAction.class.php(161): shopOrderAction->execute()
#16 wa-system/controller/waViewController.class.php(86): waViewAction->display()
#17 wa-system/controller/waDefaultViewController.class.php(48): waViewController->executeAction(Object(shopOrderAction))
#18 wa-system/controller/waController.class.php(21): waDefaultViewController->execute()
#19 wa-system/controller/waViewController.class.php(46): waController->run(NULL)
#20 wa-system/controller/waFrontController.class.php(263): waViewController->run(NULL)
#21 wa-system/controller/waFrontController.class.php(190): waFrontController->runController(Object(waDefaultViewController), NULL)
#22 wa-system/controller/waFrontController.class.php(84): waFrontController->execute(NULL, 'order', NULL)
#23 wa-system/waSystem.class.php(741): waFrontController->dispatch()
#24 wa-system/waSystem.class.php(613): waSystem->dispatchBackend('webasyst/shop/')
#25 index.php(7): waSystem->dispatch()
#26 {main}

Что это и почему это?



6 комментариев

  • +2

    Видимо было установлено последнее обновление Shop-script?

    Ошибка указывает на неправильный запрос в базу данных. Связан он с таблицей 

    shop_type_codes 

    Точнее в этом месте запроса

    AND tc.type_id IN (0, )

    где после запятой отсутствует идентификатор.

    Предполагаю, что данная ошибка связана с новым функционалом Товарных кодов, добавленным в последнем обновлении Shop-script. 

    Если заказ без товаров, то в нём нет и товарных кодов. Поэтому, скорее всего, и возникает ошибка. Разработчики, очевидно, предполагают, что не может быть заказа без товаров, что, в принципе, логично.

    В Вашем случае нужно переделать функционал корзины, чтобы не допускать создание "пустых" заказов. Предполагаю, что они возникают из-за многократного нажатия на кнопку подтверждения оформления заказа в корзине, когда клиент не дожидается ответа сервера. Если так, то решением будет являться блокировка кнопки создания заказа после нажатия.

    • +1
      Алексей Алексей 23 марта 2020 02:31 #

      Да, именно после обновления такая фигня появилась. 

      А как сделать блокировку кнопки?

      И как удалить этот висящий сейчас полузаказ?

      • +2
        А как сделать блокировку кнопки?

        Это зависит от шаблона корзины Вашего сайта. Скорее всего, Вы используете не стандартную корзину, а какой-то плагин или отдельный шаблон корзины.Вероятно, потребуется найти js код, отвечающий за нажатие кнопки "Оформить заказ" и доработать его.

        И как удалить этот висящий сейчас полузаказ?

        Проще всего через базу данных найти заказ по идентификатору в таблице shop_order. Далее в поле state_id поменять значение на deleted. 

        Ещё можете попробовать такой вариант. Откройте заказ по прямой ссылке на редактирование

        https://domain/webasyst/shop/?action=orders#/orders/edit/order_id/
        domain - url сайта
        order_id - id заказа

        Если откроется, то добавьте хотя бы один товар и сохраните. Далее уже удалите стандартно...

        • +1
          Алексей Алексей 24 марта 2020 15:37 #

          Спасибо! По ссылке для редактирования удалось добавить товар и после этого удалить заказ.


          Да, мы используем плагин "Заказ на одной странице".

        • +2
          Александр Галкин Александр Галкин 24 марта 2020 13:27 #

          такая же проблема

          • +1
            Алексей Алексей 24 марта 2020 14:19 #

            будем надеться, что починят, раз статус "принято" появился.

            А вообще, у нас много косяков повылезало после последнего обновления.

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

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