Помощь SimonFilters и ошибка MYSQL

animal_x

Постоялец
Регистрация
22 Июн 2012
Сообщения
412
Реакции
147
ocStore 1.5.4.1.2
Simon Filters 2.10.0 Build 0002

Сначала обнаружил что перестал работать фильтр, после выбора одного из параметров товары исчезают, как будто их нет, хотя они есть. Почистил кеш системы, вкмода - не помогло. Полез в лог файл и там ошибка:
PHP:
2015-05-20 16:06:17 - PHP Notice:  Error: 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 '(p.price BETWEEN 2647 AND 14929 OR ps.price BETWEEN 2647 AND 14929 ) AND  GROUP ' at line 3<br />Error No: 1064<br />SELECT p.product_id, (SELECT AVG(rating) AS total FROM review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating FROM product p LEFT JOIN product_description pd ON (p.product_id = pd.product_id) LEFT JOIN product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN product_to_category p2c ON (p.product_id = p2c.product_id) LEFT JOIN product_special ps ON (p.product_id = ps.product_id)  WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' AND p2c.category_id IN (65, 71, 74, 78, 70, 69, 76, 75, 68, 73, 67, 72, 77)

(p.price BETWEEN 2647 AND 14929 OR ps.price BETWEEN 2647 AND 14929 ) AND  GROUP BY p.product_id ORDER BY p.sort_order ASC, LCASE(pd.name) ASC in /www/system/database/mysql.php on line 49

Пробовал уже переставить фильтр, также не помогло. Причем есть 2 практически одинаковых магазина, с одинаковыми модулями и этим саймонфильтром. На одном все продолжает работать, а на другом вот такая беда.
 
Вероятнее всего один из фильтров либо настроен либо задан не с неверными параметрами. Но это не глядя на код, чисто на основе опыта разработки ;)
 
На 2х сайтах настройки одинаковы, и не важно по какому признаку фильтрую (цена, опция, тег, категория), все равно ошибка
 
у вас между AND p2c.category_id IN (65, 71, 74, 78, 70, 69, 76, 75, 68, 73, 67, 72, 77) и (p.price BETWEEN 2647 AND 14929 OR ps.price BETWEEN 2647 AND 14929 )
не стоит ключевое слово AND
 
Последнее редактирование:
В общем решил проблему, сначала грешил на базу, т.к она обновляется почти каждый день, пробовал и откатывать на старую версию но также безрезультатно.
Потом начал сравнивать пофайлово файлы фильтра на обеих сайтах, и заметил такой файл по пути:
/www/catalog/model/catalog/product.simonbackup.20150506140541.php, т.е фильтр почемуто сделал бекап модели продукта 6 мая и перезаписал ее с изменениями, хотя я в мае к файлам и настройкам точно не лез. В общем я переименовал этот simonbackup файл в product.php и все заработало.
 
Назад
Сверху