जब आप किसी क्लाइंट को शारीरिक रूप से डिस्कनेक्ट कर रहे होते हैं तो आप एक सामान्य डिस्कनेक्ट नहीं भेज रहे होते हैं (जिसके कारण रोलबैक होता है) और MySQL प्रोटोकॉल बहुत बातूनी नहीं है, इसलिए सर्वर कभी नहीं जानता कि क्लाइंट वहां नहीं है। मुझे लगता है कि यह अन्य डेटाबेस सिस्टम की तुलना में प्रोटोकॉल में एक दोष है जहां क्लाइंट और सर्वर आंतरिक रूप से बहुत अधिक बात करते हैं।
फिर भी। दो चर हैं जिन्हें आप बदल सकते हैं। वे मूल रूप से वही करते हैं लेकिन विभिन्न ग्राहकों के लिए।
पहला है wait_timeout और इसका उपयोग जावा या php जैसे एप्लिकेशन क्लाइंट द्वारा किया जाता है।
दूसरा है interactive_timeout और इसका उपयोग mysql क्लाइंट द्वारा किया जाता है (जैसा कि आपके परीक्षणों में है)
दोनों ही मामलों में सर्वर कई सेकंड के बाद कनेक्शन को बंद कर देता है और ऐसा करते समय सभी लेनदेन को रोलबैक कर देता है और सभी लॉक को छोड़ देता है।