Contactar o apoio

Respondemos por e-mail, normalmente em dois dias.

Para prevenir abusos, o Google reCAPTCHA verifica este envio; alguns dados são transmitidos ao Google. O script só é carregado quando abre este formulário.

← Todos os artigos

Um endereço comprido deitou o contador abaixo

A 9 de agosto de 2026, vinte imagens de contador não chegaram a aparecer. Não saíram erradas, não saíram lentas — o visitante não recebeu nada onde devia estar um contador.

A causa foi um endereço de página com mais de 255 caracteres.

A cadeia

A coluna que guarda em que página aterrou uma visita é varchar(255). O endereço chegou mais comprido. A inserção falhou com SQLSTATE 22001, dados demasiado longos para a coluna, o que neste código lança uma exceção.

E a escrita da estatística acontece antes de a imagem ser desenhada. A exceção não perdeu portanto apenas uma linha de estatísticas. Abortou o pedido, e o pedido era justamente aquele que produz a imagem do contador. Uma página com endereço comprido partia o seu próprio contador, em silêncio, para todos os visitantes.

Endereços compridos não são exóticos. Uma galeria com caminhos encaixados, uma loja com uma dúzia de parâmetros de seguimento acrescentados por uma plataforma de publicidade, uma página de resultados de pesquisa — qualquer uma passa os 255 caracteres sem esforço.

A correção, e a que não foi escolhida

O endereço é agora cortado à largura da coluna antes da inserção. De um endereço muito comprido faltam vinte caracteres na lista de páginas; nada mais muda.

A alternativa era alargar a coluna. Foi posta de lado: não há largura que não possa ser ultrapassada, e escolher um número maior só afasta a mesma falha para onde será mais difícil reconhecê-la quando chegar. O modo de falha tem de deixar de ser fatal, não tornar-se mais raro.

Embrulhar a inserção num try/catch também corrigiria o sintoma visível, e seria pior: o contador desenhava-se, a linha desaparecia em silêncio, e à lista de páginas faltariam para sempre exatamente as páginas com os endereços mais complicados, sem registo em lado nenhum.

Duas coisas para levar

Entrada vinda de fora corta-se à largura da coluna, não se espera que caiba. Tudo o que chega de fora — um endereço, uma proveniência, uma identificação de navegador, um título — tem o comprimento que outra pessoa decidiu, e a base de dados tem sobre isso uma opinião que exprime recusando.

Sabe o que mais depende do teu modo de falha. Isto era um defeito de estatísticas num serviço de estatísticas, e o dano visível foi uma imagem em falta. A escrita e o desenho partilhavam um pedido; nada no código dizia que estavam acoplados, e nada avisava que uma inserção falhada levaria a imagem consigo.

Vinte imagens partidas num dia é pouco. Foi encontrado a ler registos por causa de outra coisa completamente diferente, que é a forma habitual de encontrar estes casos e a razão para continuar a lê-los.

Publicidade