2016-02-26 3 views
0

Так я после обновления Virtuemart, и я получаю эту ошибку, когда я смотрю на конкретный продукт на сайте клиентов:VirtueMart Поиск Ошибка

vmError: exeSortSearchListQuery Unknown column 'p.product_sku' in 'where clause'

SQL=SELECT SQL_CALC_FOUND_ROWS p.`virtuemart_product_id` 
FROM `tqmux_virtuemart_products` as p 
INNER JOIN `tqmux_virtuemart_products_en_gb` as l 
    using (`virtuemart_product_id`) 
LEFT JOIN `tqmux_virtuemart_product_manufacturers` 
    ON p.`virtuemart_product_id` = `tqmux_virtuemart_product_manufacturers`.`virtuemart_product_id` 
WHERE ((`l`.product_name LIKE "%anya%" 
     OR `product_sku` LIKE "%anya%" 
     OR `l`.`slug` LIKE "%anya%" 
     OR `l`.product_s_desc LIKE "%anya%" 
     OR `l`.`metadesc` LIKE "%anya%" 
     OR `p.product_sku` LIKE "%anya%" 
     OR `c.category_name` LIKE "%anya%" 
     OR `c.category_description` LIKE "%anya%" 
     OR `m.mf_name` LIKE "%anya%" 
     OR `p.product_name` LIKE "%anya%" 
     OR `p.product_s_desc` LIKE "%anya%") 
    AND `tqmux_virtuemart_product_manufacturers`.`virtuemart_manufacturer_id` = 1  
    AND p.`virtuemart_vendor_id` = "1") 
group by p.`virtuemart_product_id` 
ORDER BY p.`created_on` DESC, `virtuemart_product_id` DESC 
LIMIT 0, 20 

Может кто-нибудь мне помочь? Благодарю.

UPDATE

enter image description here

+0

Можете ли вы показать нам, что в таблице tqmux_virtuemart_products есть (DDL)? Ошибка подразумевает, что в этой таблице не существует столбец product_Sku. Кроме того, почему у вас есть «product_Sku» и «p.product_Sku» в том месте? Какая таблица - первый продукт_Sku, из которого можно получить? Наконец, существуют псевдонимы таблиц 'p',' l', где находятся 'c',' m'? – xQbert

+0

Я сам не строю запросы, VM делает это самостоятельно. Я прикрепил изображение таблицы к вопросу выше. – PatrickMelia

+0

@xQbert вы видите, в чем проблема, если вы не возражаете, чтобы я спросил? Я пробовал для wks и не получаю где. – PatrickMelia

ответ

0

Я обычно использую только backtic только тогда, когда я должен. Например, в пробелах в именах столбцов или в именах зарезервированных имен столбцов, в противном случае они оставляют их доступными для чтения, и поэтому вы не сталкиваетесь с этими типами ошибок.

`p.product_sku` 

should be 

`p`.`product_sku` 

так ...

SELECT SQL_CALC_FOUND_ROWS p.virtuemart_product_id 
FROM tqmux_virtuemart_products as p 
INNER JOIN tqmux_virtuemart_products_en_gb as l 
    using (virtuemart_product_id) 
LEFT JOIN tqmux_virtuemart_product_manufacturers tvpm 
    ON p.virtuemart_product_id = tvpm.virtuemart_product_id 
WHERE ((l.product_name LIKE "%anya%" 
     OR product_sku LIKE "%anya%" 
     OR l.slug LIKE "%anya%" 
     OR l`.product_s_desc LIKE "%anya%" 
     OR l`.`metadesc LIKE "%anya%" 
     OR p.product_sku LIKE "%anya%" 
     OR c.category_name LIKE "%anya%" 
     OR c.category_description LIKE "%anya%" 
     OR m.mf_name LIKE "%anya%" 
     OR p.product_name LIKE "%anya%" 
     OR p.product_s_desc LIKE "%anya%") 
    AND tvpm.virtuemart_manufacturer_id = 1  
    AND p.virtuemart_vendor_id = "1") 
group by p.virtuemart_product_id 
ORDER BY p.created_on DESC, virtuemart_product_id DESC 

Я также хотел бы знать, почему

  OR p.product_sku LIKE "%anya%" 
and   OR product_sku LIKE "%anya%" 

оба в запросе. они, похоже, делают то же самое.

+0

Хорошо круто. Где я могу получить доступ к файлу, чтобы изменить его? Я никогда не изменял эту часть кода. Все, что я делал недавно, было обновлено virtuemart, обновлено db и т. Д. И все. – PatrickMelia

+0

Любое обновление, где я могу найти файл @xQbert. – PatrickMelia

+0

выйдя из моего опыта: http://forum.virtuemart.net/index.php?topic=115951.0 показывает или может быть: https://virtuemart-manager.com/useful-articles/tips-tricks/what-are- custom-sqls-and-how-to-manage-virtuemart-data-using-them/Я сам не использовал virtuemart; но посмотрите на отсутствующий SQL-код или неправильно настроенные тики - вот что вызывает проблему. можете ли вы удалить и повторно добавить элементы, которые генерируют этот SQL? Проще говоря: 'p.product_name' не является именем столбца, это имя таблицы и столбца. Нам нужно устранить обратные тики или убедиться, что они набрасываются вокруг каждой строки, а не точки. – xQbert

Смежные вопросы