Windows MySQL v5 एक त्रुटि फेंकता है लेकिन लिनक्स और अन्य संस्करण केवल एक चेतावनी बढ़ाते हैं। इसे ठीक करने की आवश्यकता है। WTF?
इसके अलावा इसे MySQL Bugtracker में बग # 19498 के रूप में ठीक करने का प्रयास देखें:
4 अप्रैल 2008 को 4:36 बजे ब्रायस नेस्बिट:
एमएस विंडोज पर "नो डिफॉल्ट" नियम एक त्रुटि है, जबकि अन्य प्लेटफार्मों पर यह अक्सर एक चेतावनी है। बग नहीं होने पर, यह संभव है कि यदि आप एक लीनियर प्लेटफ़ॉर्म पर कोड लिखते हैं, और बाद में इसे किसी सख्त प्लेटफ़ॉर्म पर चलाते हैं, तो इससे फंस सकते हैं:
व्यक्तिगत रूप से, मैं इसे बग के रूप में देखता हूं। Google पर 2,940 परिणामों के बारे में "BLOB / TEXT कॉलम के लिए खोज करने पर डिफ़ॉल्ट मान नहीं मिल सकता है"। उनमें से ज्यादातर असंगतताओं की रिपोर्ट है जब एक सिस्टम पर काम करने वाले DB स्क्रिप्ट को स्थापित करने की कोशिश की जा रही है, लेकिन अन्य नहीं।
मैं अब उसी समस्या पर चल रहा हूं, एक वेबएप पर मैं अपने एक क्लाइंट के लिए संशोधन कर रहा हूं, जो मूल रूप से लिनक्स MySQL v5.0.83- लॉग पर तैनात है। मैं विंडोज MySQL v5.1.41 चला रहा हूं। यहां तक कि डेटाबेस को निकालने के लिए phpMyAdmin के नवीनतम संस्करण का उपयोग करने की कोशिश कर रहा है, यह प्रश्न में पाठ कॉलम के लिए डिफ़ॉल्ट रिपोर्ट नहीं करता है। फिर भी, जब मैं विंडोज पर एक इन्सर्ट चलाने की कोशिश करता हूं (जो कि लिनक्स परिनियोजन पर ठीक काम करता है) तो मुझे एबीसी कॉलम पर कोई डिफ़ॉल्ट नहीं मिलने की त्रुटि मिलती है। मैं स्पष्ट रूप से डिफ़ॉल्ट के साथ स्थानीय रूप से तालिका को फिर से बनाने की कोशिश करता हूं (उस स्तंभ के लिए अद्वितीय मानों के आधार पर) और अंत में ओह-सो-उपयोगी BLOB / TEXT कॉलम प्राप्त करने का डिफ़ॉल्ट मान नहीं हो सकता है ।
फिर से, प्लेटफ़ॉर्म पर बुनियादी कॉम्पैटिबिलिटी को बनाए न रखना अस्वीकार्य है और एक बग है।
MySQL 5 (विंडोज) में सख्त मोड को कैसे निष्क्रिय करें:
/My.ini संपादित करें और लाइन देखें
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
इसे बदलें
sql_mode='MYSQL40'
MySQL सेवा को पुनरारंभ करें (यह मानते हुए कि यह mysql5 है)
net stop mysql5
net start mysql5
यदि आपके पास रूट / व्यवस्थापक पहुंच है, तो आप निष्पादित करने में सक्षम हो सकते हैं
mysql_query("SET @@global.sql_mode='MYSQL40'");