Sütununa sığmayan bir sayfa adresi
9 Ağustos 2026 tarihinde yirmi sayaç görseli oluşturulamadı. Yanlış çizilmedi, yavaş çizilmedi — ziyaretçi, sayacın olması gereken yerde hiçbir şey görmedi.
Nedeni, 255 karakterden uzun bir sayfa adresiydi. Adres artık yazıldığı anda kırpılıyor ve sayaç görseli, kendisine bildirilen adresin uzunluğuna artık bağlı değil.
Zincir
Bir ziyaretin hangi sayfaya düştüğünü saklayan sütunun türü varchar(255). Gelen adres bundan uzundu. Ekleme işlemi şu hatayla başarısız oldu: SQLSTATE 22001, yani sütun için fazla uzun veri; bu kodda bu durum bir istisna fırlattı.
Üstelik istatistik kaydı, görsel çizilmeden önce yazılıyor. Bu yüzden istisna yalnızca bir satır istatistiğin kaybolmasına yol açmadı. İsteği yarıda kesti ve o istek, sayaç resmini üreten istekti. Uzun adresli bir sayfa, her ziyaretçi için kendi sayacını sessizce bozdu.
Uzun adresler sıra dışı değildir. İç içe yolları olan bir galeri, bir reklam platformunun eklediği bir düzine izleme parametresini taşıyan bir mağaza, bir arama sonuçları sayfası — bunların her biri 255 karakteri zorlanmadan aşar.
Çözüm ve seçilmeyen çözüm
Adres artık eklemeden önce sütun genişliğine göre kesiliyor. Çok uzun bir URL adresinin yirmi karakteri sayfa listesinden kayboluyor; başka hiçbir şey değişmiyor.
Alternatif, sütunu genişletmekti. Bu reddedildi: aşılamayacak bir genişlik yoktur ve daha büyük bir sayı seçmek, aynı hatayı yalnızca daha uzağa taşır; geldiğinde orada tanınması daha zor olur. Hatanın daha seyrek hâle gelmesi değil, ölümcül olmaktan çıkması gerekir.
Eklemeyi bir try/catch içine almak da görünen belirtiyi giderirdi ve bu daha kötü olurdu: sayaç çizilir, satır sessizce kaybolur ve sayfa listesinde tam da en karmaşık adreslere sahip sayfalar sonsuza dek eksik kalırdı – hiçbir günlükte tek bir iz olmadan.
Akılda tutulmaya değer iki şey
Dış girdi, sığacağı umularak değil, sütun genişliğine kırpılarak yazılmalıdır. Dışarıdan gelen her şey — bir adres, bir yönlendiren sayfa, bir kullanıcı aracısı, bir başlık — başka birinin karar verdiği kadar uzundur ve veritabanının bu konuda bir görüşü vardır; bunu da reddederek dile getirir.
Bir hatanın devamında başka nelerin geldiğini bilin. Bu, bir istatistik hizmetindeki bir istatistik hatasıydı ve görünen hasar eksik bir görseldi. Kayıt ve çizim aynı isteği paylaşıyordu; kodda ikisinin bağlı olduğunu söyleyen hiçbir şey yoktu ve başarısız bir eklemenin resmi de beraberinde götüreceği konusunda hiçbir şey uyarmıyordu.
Bir günde yirmi bozuk görsel az bir sayı. Bambaşka bir şey için günlükler okunurken bulundu; bu tür hatalar genellikle böyle bulunur ve günlükleri okumaya devam etmenin nedeni de budur.