Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

[Решено?..] Отчет по заказам клиентов - Error No: 1317


max6002
 Поделиться

Рекомендованные сообщения

Подскажите как оптимизировать запрос в admin/model/report/customer.php, а то сейчас выдает ошибку

Notice: Error: Query execution was interrupted
Error No: 1317

OcStore 1.5.5.1.2, более 1600 клиентов

Ссылка на комментарий
Поделиться на других сайтах


долго выполняется и сервер обрывает запрос?

уточни у хостера, запроси лог медленных запросов.

Ссылка на комментарий
Поделиться на других сайтах

в панели хостинга в медленных запросах все чисто. скорее всего обрывает, а то страницу долго грузит

ошибка указывает на этот запрос

Notice: Error: Query execution was interrupted
Error No: 1317
SELECT tmp.customer_id, tmp.customer, tmp.status, COUNT(tmp.order_id) AS orders, SUM(tmp.total) AS total FROM (SELECT o.order_id, c.customer_id, CONCAT(o.firstname, ' ', o.lastname) AS customer, o.email, cgd.name AS customer_group, c.status, (SELECT SUM(op.quantity) FROM `oc_order_product` op WHERE op.order_id = o.order_id GROUP BY op.order_id) AS products, o.total FROM `oc_order` o LEFT JOIN `oc_customer` c ON (o.customer_id = c.customer_id) LEFT JOIN oc_customer_group_description cgd ON (c.customer_group_id = cgd.customer_group_id) WHERE o.customer_id > 0 AND cgd.language_id = '1' AND o.order_status_id > '0') tmp GROUP BY tmp.customer_id ORDER BY total DESC LIMIT 0,50 in /www/system/database/mysql.php on line 50
Ошибка возникает, при попытке загрузить отчет Покупатели-Заказы
Ссылка на комментарий
Поделиться на других сайтах


прописывались такие индексы

ALTER TABLE oc_product_attribute ADD INDEX attribute_id ( attribute_id );
ALTER TABLE oc_product_attribute ADD INDEX language_id ( language_id );
 
ALTER TABLE oc_product_description ADD INDEX language_id ( language_id );
 
ALTER TABLE oc_product_image ADD INDEX product_id ( product_id );
ALTER TABLE oc_product_image ADD INDEX sort_order ( sort_order );
 
ALTER TABLE oc_product_option ADD INDEX product_id (product_id);
ALTER TABLE oc_product_option ADD INDEX option_id (option_id);
 
ALTER TABLE oc_product_option_value ADD INDEX product_option_id (product_option_id);
ALTER TABLE oc_product_option_value ADD INDEX product_id (product_id);
ALTER TABLE oc_product_option_value ADD INDEX option_id (option_id);
ALTER TABLE oc_product_option_value ADD INDEX option_value_id (option_value_id);
ALTER TABLE oc_product_option_value ADD INDEX subtract (subtract);
ALTER TABLE oc_product_option_value ADD INDEX quantity (quantity);
 
ALTER TABLE oc_product_reward ADD INDEX product_id ( product_id );
ALTER TABLE oc_product_reward ADD INDEX customer_group_id ( customer_group_id );
 
ALTER TABLE oc_product_to_category ADD INDEX category_id ( category_id );
 
ALTER TABLE oc_product_to_store ADD INDEX store_id ( store_id );
 
ALTER TABLE oc_setting ADD INDEX store_id ( store_id );
ALTER TABLE oc_setting ADD INDEX `group` ( `group` );
ALTER TABLE oc_setting ADD INDEX `key` ( `key` );
ALTER TABLE oc_setting ADD INDEX serialized ( serialized );
 
ALTER TABLE oc_url_alias ADD INDEX query ( query );
Ссылка на комментарий
Поделиться на других сайтах


ну, как бы, эти совсем не касаются запроса.

в общем можно и нужно добавить индексы по столбцам из запроса (в любом случае) + таки переписать сам запрос.

однако!

также обязательно необходимо узнать у хостера временное ограничение на выполнение запросов.

вдруг действительно мало времени дается...

Ссылка на комментарий
Поделиться на других сайтах

как я понял нужны индексы для таблиц oc_order_product, oc_order, oc_customer
 

ALTER TABLE oc_order_product ADD INDEX order_product_id ( order_product_id );
ALTER TABLE oc_order_product ADD INDEX order_id ( order_id );
ALTER TABLE oc_order_product ADD INDEX product_id ( product_id );

ALTER TABLE oc_order ADD INDEX order_id ( order_id );
ALTER TABLE oc_order ADD INDEX customer_id ( customer_id );
ALTER TABLE oc_order ADD INDEX customer_group_id ( customer_group_id );

ALTER TABLE oc_customer ADD INDEX customer_id ( customer_id );
ALTER TABLE oc_customer ADD INDEX customer_group_id ( customer_group_id );

может что-то лишнее? каким еще полям можно индексы прописать?

 

Ссылка на комментарий
Поделиться на других сайтах


  • 4 недели спустя...

Получилось данную проблему решить? Тоже с этим столкнулся. Индексы проставил не помогло. Хостер пишет что лимит памяти исчерпан:

 

 

Jun  5 13:39:55 ovzhost80 kernel: [1080659.433317] Out of memory in UB 7982403: OOM killed process 1031164 (mysqld) score 0 vm:1458224kB, rss:159716kB, swap:0kB

 

возможности сменить хостера нету, ngnix и акселлератор стоит, но не погает :(

Изменено пользователем Гость
Ссылка на комментарий
Поделиться на других сайтах

Ради эксперемента перенес сайт на мощный сервер, проблема таже самая. Дело в таком кривом запросе в customer.php

Удалить старые заказы не вариант. А вот как из ситуации выйти не понимаю. Почему заходя в Отчеты - Покупатели - Заказы, тупо бразуер грузит и не выдает не оишбок ничего.

Изменено пользователем Гость
Ссылка на комментарий
Поделиться на других сайтах

Отсутвовали изначально в OpenCart индексы вот эти, добавив, проблема разрешилась:

 

 

alter table order_product add index order_id(order_id);
alter table order add index order_status_id(order_status_id);
alter table order add index customer_order_status_id(customer_order_status_id);
alter table customer_group_description add index language_id(language_id);

Ссылка на комментарий
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
 Поделиться

  • Сейчас на странице   0 пользователей

    • Нет пользователей, просматривающих эту страницу.
×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.