विंडोज MySQL v5 एक त्रुटि फेंकता है लेकिन लिनक्स और अन्य संस्करण केवल एक चेतावनी देते हैं। इसे ठीक करने की आवश्यकता है। WTF?
इसे MySQL बगट्रैकर में बग #19498 के रूप में ठीक करने का प्रयास भी देखें:
<ब्लॉककोट>
ब्रायस नेस्बिट 4 अप्रैल 2008 को शाम 4:36 बजे:
एमएस विंडोज पर "नो डिफॉल्ट" नियम एक त्रुटि है, जबकि अन्य प्लेटफॉर्म पर यह अक्सर एक चेतावनी होती है। हालांकि यह कोई बग नहीं है, लेकिन यदि आप एक उदार मंच पर कोड लिखते हैं, और बाद में इसे एक सख्त प्लेटफॉर्म पर चलाते हैं, तो आप इसमें फंस सकते हैं:
व्यक्तिगत रूप से, मैं इसे एक बग के रूप में देखता हूं। "BLOB/TEXT कॉलम में डिफ़ॉल्ट मान नहीं हो सकता" की खोज करने पर Google पर लगभग 2,940 परिणाम मिलते हैं। उनमें से अधिकांश डीबी स्क्रिप्ट स्थापित करने का प्रयास करते समय असंगतताओं की रिपोर्ट हैं जो एक सिस्टम पर काम करती हैं लेकिन अन्य नहीं।
मैं अब एक वेबपैप पर एक ही समस्या में भाग रहा हूं, मैं अपने ग्राहकों में से एक के लिए संशोधित कर रहा हूं, मूल रूप से लिनक्स MySQL v5.0.83-लॉग पर तैनात किया गया है। मैं विंडोज MySQL v5.1.41 चला रहा हूँ। डेटाबेस निकालने के लिए phpMyAdmin के नवीनतम संस्करण का उपयोग करने का प्रयास करने पर भी, यह प्रश्न में टेक्स्ट कॉलम के लिए डिफ़ॉल्ट रिपोर्ट नहीं करता है। फिर भी, जब मैं विंडोज़ पर एक डालने का प्रयास करता हूं (जो लिनक्स परिनियोजन पर ठीक काम करता है) मुझे एबीसी कॉलम पर कोई डिफ़ॉल्ट त्रुटि नहीं मिलती है। मैं स्थानीय रूप से स्पष्ट डिफ़ॉल्ट (उस कॉलम के लिए अद्वितीय मानों के चयन के आधार पर) के साथ तालिका को फिर से बनाने का प्रयास करता हूं और ओह-उपयोगी ब्लॉब/टेक्स्ट कॉलम प्राप्त करने के लिए डिफ़ॉल्ट मान नहीं हो सकता है ।
फिर से, सभी प्लेटफार्मों पर बुनियादी संगतता बनाए रखना अस्वीकार्य है और यह एक बग है।
MySQL 5 (Windows) में सख्त मोड को अक्षम कैसे करें:
-
/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'");