Hola, buenos días.
He recibido un email de Google webmastertools diciendo que se había producido un incremento de errores en mi servidor web. Siguiendo los enlaces he visto que todos eran problemas de las fichas de los proveedores (ejemplo de uno):
http://www.djstore.es/80_allen-heath
Resulta que tenía activado define('_PS_MODE_DEV_', true); en config/defines.inc.php y cuando cargaba una página de proveedor salía esto:
Unknown column 'product_attribute_shop.id_product_attribute' in 'field list' SELECT p.*, product_shop.*, stock.out_of_stock, IFNULL(stock.quantity, 0) as quantity, MAX(product_attribute_shop.`id_product_attribute`) id_product_attribute , pl.`description`, pl.`description_short`, pl.`link_rewrite`, pl.`meta_description`, pl.`meta_keywords`, pl.`meta_title`, pl.`name`, pl.`available_now`, pl.`available_later`, MAX(image_shop.`id_image`) id_image, il.`legend`, m.`name` AS manufacturer_name, DATEDIFF( product_shop.`date_add`, DATE_SUB( NOW(), INTERVAL 20 DAY ) ) > 0 AS new FROM `ps_product` p INNER JOIN ps_product_shop product_shop ON (product_shop.id_product = p.id_product AND product_shop.id_shop = 1) LEFT JOIN `ps_product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = 1 AND pl.id_shop = 1 ) LEFT JOIN `ps_image` i ON (i.`id_product` = p.`id_product`) LEFT JOIN ps_image_shop image_shop ON (image_shop.id_image = i.id_image AND image_shop.id_shop = 1 AND image_shop.cover=1) LEFT JOIN `ps_image_lang` il ON (i.`id_image` = il.`id_image` AND il.`id_lang` = 1) LEFT JOIN `ps_manufacturer` m ON (m.`id_manufacturer` = p.`id_manufacturer`) LEFT JOIN ps_stock_available stock ON (stock.id_product = p.id_product AND stock.id_product_attribute = 0 AND stock.id_shop = 1 AND stock.id_shop_group = 0 )JOIN `ps_category_product` cp ON (p.id_product = cp.id_product)JOIN `ps_category` ca ON cp.`id_category` = ca.`id_category` AND ca.`active` = 1 WHERE p.`id_manufacturer` = 80 AND product_shop.`active` = 1 AND product_shop.`visibility` IN ("both", "catalog") GROUP BY product_shop.id_product ORDER BY product_shop.`price` asc LIMIT 0,12 at line 646 in file classes/db/Db.php 641. WebserviceRequest::getInstance()->setError(500, '[SQL Error] '.$this->getMsgError().'. From '.(isset($dbg[3]['class']) ? $dbg[3]['class'] : '').'->'.$dbg[3]['function'].'() Query was : '.$sql, 97); 642. } 643. elseif (_PS_DEBUG_SQL_ && $errno && !defined('PS_INSTALLATION_IN_PROGRESS')) 644. { 645. if ($sql) 646. throw new PrestaShopDatabaseException($this->getMsgError().''.$sql.'');
647. throw new PrestaShopDatabaseException($this->getMsgError());
648. }
649. }
650.
651. /**DbCore->displayError - [line 340 - classes/db/Db.php] - [1 Arguments]
DbCore->query - [line 516 - classes/db/Db.php] - [1 Arguments]
DbCore->executeS - [line 373 - classes/Manufacturer.php] - [1 Arguments]
ManufacturerCore::getProducts - [line 98 - controllers/front/ManufacturerController.php] - [6 Arguments]
ManufacturerControllerCore->assignOne - [line 79 - controllers/front/ManufacturerController.php]
ManufacturerControllerCore->initContent - [line 180 - classes/controller/Controller.php]
ControllerCore->run - [line 373 - classes/Dispatcher.php]
DispatcherCore->dispatch - [line 28 - index.php]He cambiado PS_MODE_DEV por false y ahora carga la página de proveedor pero indica que no hay artículos de ese proveedor, lo cual no es cierto.
Tengo una copia en local de mi web y en local no tengo este problema. He consultado las tablas ps_product_attribute_shop en local y en el servidor y ambas están vacías. En el código que he puesto antes parece como que no encuentra el prefijo "ps" para añadir a las tablas: ps_product_attribute_shop frente a product_attribute_shop.
¿Me podéis echar una mano a solucionar esto, please?
Gracias por adelantado
URL del sitio: Contenido solo visible a usuarios registrados
Hola,
Da la sensación de que PrestaShop tiene un bug en esta consulta contra la base de datos.
Prueba a editar el archivo classes/Manufacturer.php. Previa copia de seguridad del mismo cambio en él la cadena product_attribute_shop (sale en 4 sitios) por la cadena pa y comprueba si así se soluciona el problema.