Resolver problemas
PrestaShopException: diagnosticar Invalid address
A exceção Invalid address #ID indica que o PrestaShop não conseguiu carregar um endereço válido para esse identificador. O rastreio permite descobrir se vem de um carrinho, de uma encomenda ou de um módulo; não presuma que todos os casos se corrigem pondo um endereço a zero.
Localizar a referência
Anote o ID, a ação, o URL e o rastreio. Trabalhe primeiro sobre uma cópia. Substitua PREFIX_ pelo prefixo real e <ID> pelo número verificado:
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>;
Se o endereço existir, reveja o seu estado e a lógica que o utiliza antes de o modificar. Se existir uma encomenda, preserve o seu endereço histórico; uma referência inexistente pode exigir recuperá-lo a partir de uma cópia e rever a integridade da encomenda.
Caso limitado: carrinho sem encomenda e endereço inexistente
Só quando o rastreio confirmar esse caso, identifique um carrinho concreto e o campo afetado. Este exemplo afeta exclusivamente o endereço de entrega do carrinho selecionado, sem encomenda e cujo endereço não existe. Substitua também <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;
A simulação requer tabelas transacionais como InnoDB e a mesma ligação para todas as instruções. Confirme que muda apenas a linha prevista e que ROLLBACK recupera o valor anterior. Não serve como garantia de reversão em MyISAM.
Para verificar o comportamento da aplicação, confirme a alteração apenas no clone e reproduza lá o carrinho. Um pedido web noutra ligação normalmente não verá as alterações ainda não confirmadas da sua transação. O utilizador pode ter de voltar a selecionar o seu endereço.
Se o campo incorreto for o de faturação, prepare e teste a instrução correspondente; não modifique ambos por rotina. Em produção, conserve outra cópia imediatamente anterior e evite escritas concorrentes antes de executar apenas a alteração verificada. Não esvazie carrinhos nem normalize todas as referências órfãs da loja.
Se não conseguir identificar uma única relação e o seu efeito, faculte o rastreio e os identificadores ao suporte ou ao programador sem anexar dados pessoais de endereços.
Também lhe pode ser útil
- Erro "Argument X passed OrderProductForViewing must be of the type string" Identifique o argumento e a linha exatos que entregam NULL ao visualizar uma encomenda do PrestaShop...
- Erro "Shop not found at line xxx in file classes/shop/Shop.php" Localize a origem de Shop not found revendo o URL pedido, shop_url e o âmbito de PS_SHOP_DEFAULT ant...
- Erro de fusos horários do GLPI com MariaDB ou MySQL Distingue entre dados de fusos horários não carregados e a permissão que só as versões do GLPI anter...
- Erro SQLSTATE 2026 ao instalar ou atualizar o PrestaShop Diagnostique a ligação SSL com o MySQL que impede o Doctrine de consultar a versão do servidor, sem...
Algo não bate certo ou mudou? Diga-nos e revemos.