Adresa stránky delší než její sloupec
9. srpna 2026 se nevykreslilo dvacet obrázků počítadla. Nevykreslily se špatně ani pomalu — návštěvník nedostal vůbec nic tam, kde mělo být počítadlo.
Příčinou byla adresa stránky delší než 255 znaků. Teď se zkracuje už při zápisu a obrázek počítadla už nezávisí na délce adresy, kterou dostane.
Řetězec
Sloupec, který ukládá, na kterou stránku návštěva dorazila, je varchar(255). Adresa přišla delší. Vložení selhalo s SQLSTATE 22001, data příliš dlouhá pro sloupec, což v tomto kódu vyvolalo výjimku.
A zápis statistik proběhne před vykreslením obrázku. Výjimka tedy nepřipravila jen o jeden řádek statistik. Přerušila požadavek, a ten požadavek byl právě ten, který vytváří obrázek počítadla. Stránka s dlouhou adresou rozbila své vlastní počítadlo, potichu, pro každého návštěvníka.
Dlouhé adresy nejsou nic exotického. Galerie s vnořenými cestami, e-shop s tuctem sledovacích parametrů, které přidala reklamní platforma, stránka s výsledky hledání — kterákoli z nich překročí 255 znaků bez námahy.
Oprava a oprava, která zvolena nebyla
Adresa se teď před vložením zkrátí na šířku sloupce. Z velmi dlouhé URL se v seznamu stránek ztratí dvacet znaků; nic jiného se nemění.
Alternativou bylo sloupec rozšířit. To bylo zamítnuto: neexistuje šířka, kterou nelze překročit, a volba většího čísla jen odsouvá stejné selhání dál, kde bude těžší ho poznat, až přijde. Selhání musí přestat být fatální, ne jen vzácnější.
Obalit vložení do try/catch by také odstranilo viditelný příznak, a bylo by to horší: počítadlo by se vykreslilo, řádek by potichu zmizel a v seznamu stránek by navždy chyběly právě stránky s nejsložitějšími adresami, bez jediné zmínky v jakémkoli protokolu.
Dvě věci, které si stojí za to odnést
Cizí vstup se má zkrátit na šířku sloupce, ne doufat, že se vejde. Cokoli, co přichází zvenčí — adresa, odkazující stránka, user agent, titulek — je tak dlouhé, jak rozhodl někdo jiný, a databáze na to má názor, který vyjadřuje odmítnutím.
Vědět, co ještě visí na tom, co může selhat. Byla to chyba statistik ve službě pro statistiky a viditelnou škodou byl chybějící obrázek. Zápis a vykreslení sdílely požadavek; nic v kódu neříkalo, že jsou provázané, a nic nevarovalo, že neúspěšné vložení vezme obrázek s sebou.
Dvacet rozbitých obrázků za den je málo. Našlo se to při čtení protokolů kvůli něčemu úplně jinému, což je obvyklý způsob, jak se takové věci najdou, a důvod, proč je číst dál.