सहायता से संपर्क करें

हम ईमेल से जवाब देते हैं, आम तौर पर दो दिन के अंदर।

Google reCAPTCHA दुरुपयोग से बचाव के लिए इस सबमिशन की जाँच करता है; इसके लिए डेटा Google को भेजा जाता है। स्क्रिप्ट तभी लोड होती है, जब यह फ़ॉर्म खोला जाता है।

← सभी पोस्ट

जब पेज का पता अपने कॉलम से लंबा निकला

9 अगस्त 2026 को बीस काउंटर इमेज बन ही नहीं पाईं। गलत नहीं बनीं, धीरे नहीं बनीं — जहाँ काउंटर होना चाहिए था, वहाँ विज़िटर को कुछ भी नहीं मिला।

वजह थी 255 अक्षरों से लंबा एक पेज पता। अब उसे लिखते समय ही छोटा कर दिया जाता है, और काउंटर इमेज अब उस पते की लंबाई पर निर्भर नहीं करती जो उसे बताया जाता है।

पूरी कड़ी

जिस कॉलम में यह दर्ज होता है कि कोई विज़िट किस पेज पर पहुँची, वह है varchar(255)। पता उससे लंबा आया। इन्सर्ट विफल हुआ और लौटा SQLSTATE 22001, यानी “कॉलम के लिए डेटा बहुत लंबा”, जिससे इस कोड में एक एक्सेप्शन उठा।

और आँकड़े लिखने का काम पहले होता है, इमेज बाद में बनती है। इसलिए एक्सेप्शन से सिर्फ़ आँकड़ों की एक पंक्ति ही नहीं खोई। उसने पूरा अनुरोध बीच में रोक दिया, और यह वही अनुरोध था जो काउंटर की तस्वीर बनाता है। लंबे पते वाला पेज चुपचाप, हर विज़िटर के लिए, अपना ही काउंटर तोड़ रहा था।

कॉलमvarchar(255)इन्सर्ट विफलSQLSTATE 22001एक्सेप्शनअनुरोध रुक जाता हैविज़िटर को काउंटर इमेज नहीं मिलती

लंबे पते कोई अनोखी चीज़ नहीं हैं। नेस्टेड पाथ वाली कोई गैलरी, किसी विज्ञापन प्लेटफ़ॉर्म के जोड़े दर्जन भर ट्रैकिंग पैरामीटर वाली कोई ऑनलाइन दुकान, कोई सर्च रिज़ल्ट पेज — इनमें से कोई भी बिना किसी कोशिश के 255 अक्षर पार कर जाता है।

समाधान, और वह समाधान जो नहीं चुना गया

अब इन्सर्ट से पहले पते को कॉलम की चौड़ाई तक काट दिया जाता है। किसी बहुत लंबे URL के बीस अक्षर पेज सूची से छूट जाते हैं; और कुछ नहीं बदलता।

दूसरा रास्ता था कॉलम को चौड़ा करना। इसे ठुकरा दिया गया: ऐसी कोई चौड़ाई नहीं जिसे पार न किया जा सके, और बड़ी संख्या चुनने से वही विफलता बस और दूर खिसक जाती है, जहाँ उसके आने पर उसे पहचानना और मुश्किल होगा। विफलता को घातक होना बंद करना होगा – सिर्फ़ उसका कम होना काफ़ी नहीं।

इन्सर्ट को try/catch में लपेटने से दिखने वाला लक्षण भी ठीक हो जाता, पर वह और बुरा होता: काउंटर बन जाता, पंक्ति चुपचाप गायब हो जाती, और पेज सूची में हमेशा के लिए ठीक वही पेज नहीं होते जिनके पते सबसे पेचीदा हैं – और किसी लॉग में इसका कोई निशान नहीं होता।

याद रखने लायक दो बातें

बाहर से आए इनपुट को कॉलम की चौड़ाई तक काटना चाहिए, यह उम्मीद नहीं करनी चाहिए कि वह समा जाएगा। बाहर से आने वाली हर चीज़ — पता, रेफ़रर, यूज़र एजेंट, शीर्षक — उतनी लंबी होती है जितना किसी और ने तय किया, और डेटाबेस की इस बारे में अपनी राय होती है, जिसे वह मना करके ज़ाहिर करता है।

यह जानना ज़रूरी है कि किसी विफलता के आगे और क्या-क्या जुड़ा है। यह एक आँकड़ा सेवा में आँकड़ों का बग था, और दिखने वाला नुकसान था एक गायब इमेज। लिखना और इमेज बनाना एक ही अनुरोध में होते थे; कोड में कहीं नहीं लिखा था कि ये दोनों जुड़े हुए हैं, और किसी चीज़ ने चेतावनी नहीं दी कि विफल इन्सर्ट अपने साथ तस्वीर भी ले डूबेगा।

एक दिन में बीस टूटी इमेज छोटी बात है। यह गड़बड़ी किसी बिल्कुल अलग चीज़ के लिए लॉग पढ़ते समय मिली, जैसे ऐसी चीज़ें आमतौर पर मिलती हैं – और लॉग पढ़ते रहने की वजह भी यही है।

विज्ञापन