Kontaktovať podporu

Odpovedáme e-mailom, zvyčajne do dvoch dní.

Google reCAPTCHA kontroluje toto podanie na ochranu pred zneužitím; údaje sa prenášajú spoločnosti Google. Skript sa načíta až pri otvorení tohto formulára.

← Všetky príspevky

Adresa stránky dlhšia než jej stĺpec

O obsahu a jeho overovaní

V tomto článku

Dňa 9. augusta 2026 sa dvadsať obrázkov počítadiel nevykreslilo. Nevykreslili sa nesprávne ani pomaly — návštevník nedostal vôbec nič tam, kde malo byť počítadlo.

Príčinou bola adresa stránky dlhšia než 255 znakov. Teraz sa pri zápise skracuje a obrázok počítadla už nezávisí od dĺžky adresy, o ktorej dostane informáciu.

Reťazec

Stĺpec, ktorý ukladá, na ktorú stránku návšteva prišla, je varchar(255). Adresa dorazila dlhšia. Vloženie zlyhalo s chybou SQLSTATE 22001, údaje sú pre stĺpec príliš dlhé, čo v tomto kóde vyvolalo výnimku.

A zápis štatistík sa vykonáva predtým než sa vykreslí obrázok. Výnimka teda nespôsobila len stratu jedného riadka štatistík. Prerušila požiadavku a práve táto požiadavka vytvára obrázok počítadla. Stránka s dlhou adresou si potichu pokazila vlastné počítadlo pre každého návštevníka.

stĺpecvarchar(255)vloženie zlyháSQLSTATE 22001výnimkapreruší požiadavkunávštevník nedostane obrázok počítadla

Dlhé adresy nie sú exotické. Galéria s vnorenými cestami, obchod s tuctom sledovacích parametrov pripojených reklamnou platformou, stránka výsledkov vyhľadávania — čokoľvek z toho bez námahy prekročí 255 znakov.

Oprava a oprava, ktorá nebola zvolená

Adresa sa teraz pred vložením oreže na šírku stĺpca. Zo zoznamu stránok sa stratí dvadsať znakov veľmi dlhej URL; nič iné sa nemení.

Druhou možnosťou bolo rozšíriť stĺpec. Bola zamietnutá: neexistuje šírka, ktorú nemožno prekročiť, a výber väčšieho čísla iba posunie rovnaké zlyhanie ďalej, kde sa po príchode bude ťažšie rozpoznávať. Tento spôsob zlyhania musí prestať byť fatálny, nestačí, aby bol zriedkavejší.

Aj obalenie vloženia blokom try/catch by opravilo viditeľný príznak a bolo by horšie: počítadlo by sa vykreslilo, riadok by potichu zmizol a v zozname stránok by navždy chýbali práve stránky s najzložitejšími adresami bez akejkoľvek zmienky v protokole.

Dve poučenia, ktoré si možno odniesť

Cudzí vstup treba orezať na šírku stĺpca, nie dúfať, že sa zmestí. Čokoľvek prichádza zvonka — adresa, odkazujúca stránka, user agent, názov — je také dlhé, ako rozhodol niekto iný, a databáza na to má názor, ktorý vyjadruje odmietnutím.

Zistite, čo ďalšie nasleduje po zlyhaní. Toto bola chyba štatistík v štatistickej službe a viditeľnou škodou bol chýbajúci obrázok. Zápis a vykreslenie zdieľali požiadavku; nič v kóde nehovorilo, že sú prepojené, a nič nevarovalo, že neúspešné vloženie vezme so sebou aj obrázok.

Dvadsať pokazených obrázkov za deň je málo. Našlo sa to pri čítaní protokolov kvôli niečomu úplne inému, čo je bežný spôsob odhaľovania týchto chýb a dôvod protokoly ďalej čítať.

Reklama