Solucionar problemas

PrestaShopException: diagnosticar Invalid address

Revisado el 4 min de lectura base de datos errores prestashop

La excepción Invalid address #ID indica que PrestaShop no pudo cargar una dirección válida para ese identificador. La traza permite averiguar si procede de un carrito, un pedido o un módulo; no presupongas que todos los casos se corrigen poniendo una dirección a cero.

Localizar la referencia

Anota ID, acción, URL y traza. Trabaja primero sobre una copia. Sustituye PREFIX_ por el prefijo real y <ID> por el número comprobado:

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 la dirección existe, revisa su estado y la lógica que la utiliza antes de modificarla. Si existe un pedido, preserva su dirección histórica; una referencia inexistente puede exigir recuperarla desde una copia y revisar la integridad del pedido.

Caso limitado: carrito sin pedido y dirección inexistente

Solo cuando la traza confirme ese caso, identifica un carrito concreto y el campo afectado. Este ejemplo afecta exclusivamente a la dirección de entrega del carrito seleccionado, sin pedido y cuya dirección no existe. Sustituye también <ID_CARRITO>:

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 simulación requiere tablas transaccionales como InnoDB y la misma conexión para todas las sentencias. Confirma que cambia solo la fila prevista y que ROLLBACK recupera el valor anterior. No sirve como garantía de reversión en MyISAM.

Para comprobar el comportamiento de la aplicación, confirma el cambio únicamente en el clon y reproduce allí el carrito. Una petición web en otra conexión no verá normalmente los cambios todavía sin confirmar de tu transacción. El usuario puede tener que volver a seleccionar su dirección.

Si el campo incorrecto es facturación, prepara y prueba la sentencia correspondiente; no modifiques ambos por rutina. En producción conserva otra copia inmediatamente anterior y evita escrituras concurrentes antes de ejecutar solo el cambio comprobado. No vacíes carritos ni normalices todas las referencias huérfanas de la tienda.

Si no puedes identificar una única relación y su efecto, facilita la traza y los identificadores a soporte o al desarrollador sin adjuntar datos personales de direcciones.

También te puede ayudar

¿Algo no cuadra o ha cambiado? Cuéntanoslo y lo revisamos.