आपके द्वारा प्रदान किए गए लिंक में, यह स्पष्ट रूप से बताता है कि टेक्स्ट फ़ील्ड के लिए, "यदि मान में मल्टीबाइट वर्ण हैं तो प्रभावी अधिकतम लंबाई कम है। "
UTF-8 एक यूनिकोड वर्णसेट है, और आपके डेटाबेस के लिए डिफ़ॉल्ट है। यह पहले 128 वर्णों के लिए 1-बाइट प्रतिनिधित्व का उपयोग करता है, जो ASCII सेट से मेल खाता है, और शेष वर्णों के लिए 4-बाइट प्रतिनिधित्व करता है।
इसका मतलब यह है कि एक टेक्स्ट कॉलम में कम या ज्यादा वर्ण संग्रहीत हो सकते हैं, जो इस बात पर निर्भर करता है कि वर्ण ASCII हैं या नहीं।
अब, आपकी समस्या तब आती है जब MySQL ड्राइवर इसे ठीक से नहीं संभालता है, और मान लेगा कि सभी UTF-8 वर्ण 4 बाइट चौड़े हैं , और कॉलम की लंबाई को 4 बाइट्स से विभाजित करेगा और डेटाटेबल को वास्तविक फ़ील्ड लंबाई के रूप में पास करेगा। इसका मतलब है कि तकनीकी रूप से आपके डेटाबेस में कुछ टेक्स्ट होना संभव है जो डेटाटेबल में फिट नहीं होगा, जैसा कि आपके मामले में हुआ है।
आपकी समस्या का समाधान (या इस मामले में समाधान) ठीक वही है जो आपने अभी के लिए किया है, जो कॉलम को ऐसे प्रकार में बदल रहा है जिसमें अधिक वर्ण हो सकते हैं, जैसे कि MEDIUMTEXT या LONGTEXT।
मेरा अनुमान है कि यह निर्णय MySQL ड्राइवर के कार्यान्वयन को सरल बनाने के लिए किया गया था, लेकिन मैं Oracle को एक बग रिपोर्ट सबमिट करने पर विचार करूंगा।