Résoudre les problèmes

PrestaShopException : diagnostiquer Invalid address

Vérifié le 4 min de lecture base de datos errores prestashop

L'exception Invalid address #ID indique que PrestaShop n'a pas pu charger une adresse valide pour cet identifiant. La trace permet de savoir si elle provient d'un panier, d'une commande ou d'un module ; ne partez pas du principe que tous les cas se corrigent en remettant une adresse à zéro.

Repérer la référence

Notez l'ID, l'action, l'URL et la trace. Travaillez d'abord sur une copie. Remplacez PREFIX_ par le préfixe réel et <ID> par le numéro vérifié :

SELECT id_address, deleted, active
FROM PREFIX_address
WHERE id_address = <ID>;

SELECT c.id_cart, c.id_address_delivery, c.id_address_invoice, o.id_order
FROM PREFIX_cart c
LEFT JOIN PREFIX_orders o ON o.id_cart = c.id_cart
WHERE c.id_address_delivery = <ID>
   OR c.id_address_invoice = <ID>;

Si l'adresse existe, vérifiez son état et la logique qui l'utilise avant de la modifier. S'il existe une commande, préservez son adresse historique ; une référence inexistante peut obliger à la récupérer depuis une sauvegarde et à vérifier l'intégrité de la commande.

Cas limité : panier sans commande et adresse inexistante

Uniquement lorsque la trace confirme ce cas, identifiez un panier précis et le champ concerné. Cet exemple ne touche que l'adresse de livraison du panier sélectionné, sans commande et dont l'adresse n'existe pas. Remplacez aussi <ID_CARRITO> (l'ID du panier) :

START TRANSACTION;

UPDATE PREFIX_cart c
LEFT JOIN PREFIX_orders o ON o.id_cart = c.id_cart
LEFT JOIN PREFIX_address a ON a.id_address = c.id_address_delivery
SET c.id_address_delivery = 0
WHERE c.id_cart = <ID_CARRITO>
  AND c.id_address_delivery = <ID>
  AND o.id_order IS NULL
  AND a.id_address IS NULL;

SELECT id_cart, id_address_delivery, id_address_invoice
FROM PREFIX_cart
WHERE id_cart = <ID_CARRITO>;

ROLLBACK;

La simulation exige des tables transactionnelles comme InnoDB et la même connexion pour toutes les requêtes. Vérifiez que seule la ligne prévue change et que ROLLBACK rétablit la valeur précédente. Elle ne garantit pas l'annulation sur MyISAM.

Pour vérifier le comportement de l'application, validez la modification uniquement sur le clone et reproduisez-y le panier. Une requête web sur une autre connexion ne verra normalement pas encore les modifications non validées de votre transaction. Le client devra peut-être sélectionner à nouveau son adresse.

Si le champ incorrect est l'adresse de facturation, préparez et testez la requête correspondante ; ne modifiez pas les deux par habitude. En production, gardez une autre sauvegarde faite juste avant et évitez les écritures concurrentes avant d'exécuter uniquement la modification vérifiée. Ne videz pas les paniers et ne normalisez pas toutes les références orphelines de la boutique.

Si vous ne parvenez pas à identifier une relation unique et son effet, transmettez la trace et les identifiants à l'assistance ou au développeur, sans joindre de données personnelles d'adresses.

Cela peut aussi vous aider

Quelque chose cloche ou a changé ? Racontez-nous et nous le vérifions.