Erreur Prestashop 1.7.*: position plus grande ou égale que le nombre total de produits de la catégorie
Sous Prestashop, il peut arriver cette erreur lors de l'enregistrement d'un produit:
Vous ne pouvez pas avoir une position plus grande que le nombre total de produits de la catégorie, moins 1 (la numérotation des positions commence à 0)
Voici une requête SQL pour connaître la liste des categories qui crée cette erreur:
(remplacez ps_ par le prefixe de table que vous utilisez)
SELECT CTGRPDCT.id_category,
CTGRLANG.name AS category_name,
Count(CTGRPDCT.id_category) AS counted,
Max(CTGRPDCT.position) AS maxi
FROM ps_category_product CTGRPDCT
INNER JOIN ps_category_lang CTGRLANG
ON CTGRLANG.id_category = CTGRPDCT.id_category
AND CTGRLANG.id_shop = 1
AND CTGRLANG.id_lang = 1
GROUP BY CTGRPDCT.id_category,
CTGRLANG.name
HAVING Max(CTGRPDCT.position) >= Count(CTGRPDCT.id_category)
Et voici uue requête SQL pour la corriger:
UPDATE ps_category_product T0,
(SELECT CTGRPDCT.id_category,
CTGRPDCT.id_product,
(SELECT Count(T1.id_category)
FROM ps_category_product T1
WHERE T1.id_category = CTGRPDCT.id_category
AND T1.id_product < CTGRPDCT.id_product) AS new_position
FROM ps_category_product CTGRPDCT
GROUP BY CTGRPDCT.id_category,
CTGRPDCT.id_product) T2
SET T0.position = T2.new_position
WHERE T2.id_category = T0.id_category
AND T2.id_product = T0.id_product