Adresa stranice duža od svoje kolone
U ovom članku
Dana 9. avgusta 2026. dvadeset slika brojača nije se prikazalo. Ne pogrešno nacrtano, ne sporo — posetilac nije dobio ništa na mestu gde je trebalo da bude brojač.
Uzrok je bila adresa stranice duža od 255 znakova. Sada se skraćuje u trenutku upisa, a slika brojača više ne zavisi od dužine adrese koju dobije.
Lanac
Kolona koja čuva na kojoj je stranici posetilac sleteo je varchar(255). Adresa je stigla duža od toga. Upis nije uspeo sa SQLSTATE 22001, podaci predugački za kolonu, što je u ovom kodu izazvalo izuzetak.
A upis statistike se dešava pre nego što se slika nacrta. Dakle izuzetak nije izgubio samo jedan red statistike. Prekinuo je zahtev, a to je baš onaj zahtev koji pravi sliku brojača. Stranica sa dugačkom adresom tiho je kvarila sopstveni brojač za svakog posetioca.
Dugačke adrese nisu egzotika. Galerija sa ugnežđenim putanjama, prodavnica sa desetak parametara za praćenje koje je dodala reklamna platforma, stranica sa rezultatima pretrage — svaka od njih bez truda premašuje 255 znakova.
Ispravka i ispravka koja nije izabrana
Adresa se sada skraćuje na širinu kolone pre upisa. Dvadeset znakova veoma dugačke adrese gubi se sa liste stranica; ništa drugo se ne menja.
Alternativa je bila proširiti kolonu. Odbačena je: ne postoji širina koja se ne može premašiti, a biranje većeg broja samo pomera isti kvar dalje, gde će ga biti teže prepoznati kada stigne. Način otkaza mora da prestane da bude fatalan, a ne da postane ređi.
Umotavanje upisa u try/catch takođe bi otklonilo vidljivi simptom, a bilo bi gore: brojač bi se prikazao, red bi tiho nestao, a lista stranica bi zauvek bila bez upravo onih stranica sa najsloženijim adresama, bez traga u bilo kom logu.
Dve stvari koje vredi zapamtiti
Tuđi ulaz treba skratiti na širinu kolone, a ne nadati se da će stati. Sve što stiže spolja — adresa, upućivač, korisnički agent, naslov — dugačko je koliko je neko drugi odlučio, a baza podataka ima svoje mišljenje o tome koje izražava odbijanjem.
Znajte šta se još nalazi nizvodno od otkaza. Ovo je bila greška u statistici u statističkoj usluzi, a vidljiva šteta bila je slika koja nedostaje. Upis i iscrtavanje delili su isti zahtev; ništa u kodu nije govorilo da su povezani i ništa nije upozoravalo da će neuspeli upis povući i sliku sa sobom.
Dvadeset pokvarenih slika u jednom danu je malo. Otkriveno je čitanjem logova zbog nečeg sasvim drugog, što je uobičajen način na koji se ovakve stvari nalaze, i razlog da se logovi nastave čitati.