Solucionar problemas
PrestaShopException: diagnosticar Invalid address
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
- Error "Argument X passed OrderProductForViewing must be of the type string" Identifica el argumento y la fila exactos que entregan NULL al visualizar un pedido de PrestaShop, s...
- Error "Shop not found at line xxx in file classes/shop/Shop.php" Localiza Shop not found revisando la URL solicitada, shop_url y el ámbito de PS_SHOP_DEFAULT antes d...
- Error de zonas horarias de GLPI con MariaDB o MySQL Distingue entre datos de zonas horarias no cargados y el permiso que solo requieren versiones de GLP...
- Error SQLSTATE 2026 al instalar o actualizar PrestaShop Diagnostica la conexión SSL con MySQL que impide a Doctrine consultar la versión del servidor, sin c...
¿Algo no cuadra o ha cambiado? Cuéntanoslo y lo revisamos.