मुझे आश्चर्य हुआ जब MySQL ने मुझे NOT NULL
के साथ बनाए गए फ़ील्ड में NULL
डालने की अनुमति दी। मैंने कुछ शोध किया और पाया कि सख्त मोड को कैसे सक्षम किया जाए। हालांकि, मुझे पूरा यकीन नहीं है कि STRICT_ALL_TABLES
सक्षम होने पर MySQL प्रमाणीकरण क्या करता है।सख्त मोड सक्षम होने पर MySQL क्या करता है?
मैनुअल का कहना है:
सख्त मोड को नियंत्रित करता है कैसे MySQL इनपुट मानों कि अमान्य या गुम हैं संभालती है। कई कारणों से एक मूल्य अमान्य हो सकता है। (जोर मेरा) उदाहरण के लिए, इसमें कॉलम के लिए गलत डेटा प्रकार हो सकता है, या यह सीमा से बाहर हो सकता है।
मैं समझता हूं कि यह क्या गुम हो रहा है और यह कैसे संभालता है। मैं अस्पष्ट हूं कि यह अमान्य पर विचार करता है। मैं कुछ परीक्षण किया और निम्नलिखित की खोज की है:
- तार जो बहुत लंबी हैं
- संख्या है कि एक गैर
NULL
स्तंभ के लिए अमान्य NULL
रों हैं सीमा से बाहर हैं अमान्य हैं अमान्य हैंTRUE
औरFALSE
हमेशा वैध होने लगते हैं (वे क्रमश: 1 और 0 के हो जाते हैं)- अमान्य तिथियां अमान्य
- शून्य दिनांक मान्य हैं कर रहे हैं (addit ional मोड इस व्यवहार) एक पूर्णांक क्षेत्र में
- तैरता मान्य हैं (वे गोल पाने के) एक नंबर फ़ील्ड में
- पत्र हैं बदलने के लिए सक्रिय किया जा सकता अमान्य
MySQL के अलावा अन्य किसी भी अन्य मान्यता जांच कर करता है ऊपर क्या बताया गया है?
मैनुअल 'कॉलम के लिए गलत डेटा प्रकार' कहता है, लेकिन एकमात्र स्थिति मैं देखता हूं कि यह वास्तव में खेल में आता है, यह संख्या एक फ़ील्ड में पत्र है। क्या डेटा प्रकार त्रुटियों के अन्य उदाहरण हैं?
क्या वहां कोई सूची है जो MySQL निष्पादित करता है?
संपादित करें: रिकॉर्ड के लिए, मेरा आवेदन पहले से ही व्यापक सत्यापन करता है। मैं सख्त मोड का उपयोग आखिरी मौका के रूप में कर रहा हूं, बस मामले में चेक। अगर मैं कुछ जांचना भूल जाता हूं, तो मैं चाहता हूं कि यह 'चुपचाप मेरे डेटा को उलझाने' के बजाय में तेजी से विफल हो।
मैं महसूस कर रही आपको मिल डीबी को आपके लिए डेटा सत्यापन करने की इच्छा है। यदि ऐसा है, तो यह नीचे जाने का एक बुरा रास्ता है। – siride
@ साइराइड: डीबीएमएस *** *** सत्यापन करने के लिए *** है (विदेशी कुंजी, प्राथमिक कुंजी, जांच बाधाएं, प्रकार सत्यापन)। तथ्य यह है कि MySQL आपको 'फरवरी, 31' स्टोर करने की अनुमति देता है मेरी राय में एक बग है। या इसे दूसरी तरफ रखने के लिए: यदि डीबीएमएस कोई सत्यापन नहीं करता है तो यह जाने का एक बहुत बुरा रास्ता है। –
मैं पहले से ही आवेदन में सत्यापन करता हूं। मैं अच्छा प्रोग्रामिंग के लिए * प्रतिस्थापन * के रूप में सख्त मोड का उपयोग नहीं कर रहा हूं, बल्कि *** *** अच्छा प्रोग्रामिंग सुनिश्चित करने के लिए एक तरीका के रूप में। – toxalot