Contatta l'assistenza

Rispondiamo per e-mail, di solito entro due giorni.

Per prevenire abusi, Google reCAPTCHA verifica questo invio; alcuni dati vengono trasmessi a Google. Lo script viene caricato solo quando apri questo modulo.

← Tutti gli articoli

Un indirizzo lungo ha steso il contatore

Il 9 agosto 2026 venti immagini di contatore non sono state disegnate. Non disegnate male, non disegnate lentamente — il visitatore non ha ricevuto nulla dove doveva esserci un contatore.

La causa era un indirizzo di pagina più lungo di 255 caratteri.

La catena

La colonna che registra su quale pagina è atterrata una visita è varchar(255). L'indirizzo è arrivato più lungo. L'inserimento è fallito con SQLSTATE 22001, dati troppo lunghi per la colonna, il che in questo codice solleva un'eccezione.

E la scrittura della statistica avviene prima del disegno dell'immagine. L'eccezione dunque non ha perso solo una riga di statistiche. Ha interrotto la richiesta, e la richiesta era proprio quella che produce l'immagine del contatore. Una pagina con indirizzo lungo rompeva il proprio contatore, in silenzio, per ogni visitatore.

Gli indirizzi lunghi non sono esotici. Una galleria con percorsi annidati, un negozio con una dozzina di parametri di tracciamento aggiunti da una piattaforma pubblicitaria, una pagina di risultati di ricerca — ognuna supera i 255 caratteri senza sforzo.

La correzione, e quella non scelta

L'indirizzo ora viene tagliato alla larghezza della colonna prima dell'inserimento. Di un indirizzo lunghissimo mancano venti caratteri nell'elenco delle pagine; nient'altro cambia.

L'alternativa era allargare la colonna. È stata scartata: non esiste una larghezza che non si possa superare, e scegliere un numero più grande sposta solo lo stesso guasto più in là, dove sarà più difficile riconoscerlo quando arriverà. Il modo di guasto deve smettere di essere fatale, non diventare più raro.

Avvolgere l'inserimento in un try/catch avrebbe corretto anche il sintomo visibile, e sarebbe stato peggio: il contatore si sarebbe disegnato, la riga sarebbe sparita in silenzio, e all'elenco delle pagine sarebbero mancate per sempre proprio le pagine dagli indirizzi più complicati, senza traccia da nessuna parte.

Due cose da portarsi via

L'input esterno va tagliato alla larghezza della colonna, non sperato che ci stia. Tutto ciò che arriva da fuori — un indirizzo, una provenienza, un'identificazione del browser, un titolo — è lungo quanto ha deciso qualcun altro, e il database ha in proposito un'opinione che esprime rifiutando.

Sappi cos'altro dipende dal tuo modo di guasto. Questo era un difetto di statistiche in un servizio di statistiche, e il danno visibile era un'immagine mancante. Scrittura e disegno condividevano una richiesta; nulla nel codice diceva che fossero accoppiati, e nulla avvisava che un inserimento fallito si sarebbe portato via l'immagine.

Venti immagini rotte in un giorno sono poche. È emerso leggendo i registri per tutt'altro, che è il modo consueto in cui queste cose emergono e la ragione per continuare a leggerli.

Pubblicità