NULL की अनुमति देने के लिए मैं एक MySQL कॉलम को कैसे संशोधित करूं?


396

MySQL 5.0.45

स्तंभ को शून्य होने की अनुमति देने के लिए तालिका को बदलने के लिए वाक्यविन्यास क्या है, वैकल्पिक रूप से इसके साथ क्या गलत है:

ALTER mytable MODIFY mycolumn varchar(255) null;

मैंने मैन्युअल रूप से व्याख्या की है कि बस ऊपर चलाएं और यह कॉलम को फिर से बनाएगा, इस बार शून्य की अनुमति देगा। सर्वर मुझे बता रहा है कि मेरे पास वाक्यात्मक त्रुटियाँ हैं। मैं उन्हें नहीं देखता।


स्तंभ अद्वितीय या ऐसा कुछ नहीं है
zmf

जवाबों:


599

आप निम्नलिखित चाहते हैं:

ALTER TABLE mytable MODIFY mycolumn VARCHAR(255);

कॉलम डिफ़ॉल्ट रूप से अशक्त हैं। जब तक कॉलम घोषित नहीं किया जाता है UNIQUEया NOT NULLतब तक कोई समस्या नहीं होनी चाहिए।


14
एक किनारे का मामला है जो TIMESTAMPप्रकार है, जो आपके MySQL संस्करण और कॉन्फ़िगरेशन के आधार पर NOT NULLनिर्दिष्ट NULLकिया जा सकता है क्योंकि @ConroyP द्वारा सुझाया गया अधिक सही है।
मैथ्यू बकेट

1
इसने मेरे लिए काम नहीं किया! कॉलम नहीं बदला। हो सकता है क्योंकि मेरे पास एक और मेज पर एक बाधा थी जहां स्तंभ का उपयोग किया गया था (जब शून्य नहीं)।
रोकोलो

250

आपका सिंटैक्स त्रुटि क्वेरी में गुम "तालिका" के कारण होता है

ALTER TABLE mytable MODIFY mycolumn varchar(255) null;

26
यह वास्तव में सही उत्तर है - जबकि NULL क्लॉज की आवश्यकता नहीं है, इसे प्रदान करने में कुछ भी गलत नहीं है। ALTER TABLE कथन से गायब TABLE वास्तविक समस्या थी।
समिसेफेंस

@SamStephens और Xofo: एक प्राथमिक और द्वितीयक ("वैकल्पिक रूप से") प्रश्न है। यह द्वितीयक प्रश्न का सही उत्तर है जबकि स्वीकृत उत्तर प्राथमिक का सही उत्तर है।
jdunk

@SamStephens सिर्फ इसलिए कि प्रदान करने में कुछ भी गलत नहीं है NULL, यह इस उत्तर को स्वीकृत उत्तर की तुलना में अधिक "सही" नहीं बनाता है? यह जानना कि कॉलम डिफ़ॉल्ट रूप से अशक्त हैं (जैसा कि स्वीकृत उत्तर में बताया गया है) इस विशेष प्रश्न के संबंध में सहायक है।
rybo111

ओपी को नहीं पता कि उनके बयान से काम क्यों नहीं चला। यह उत्तर बताता है कि क्यों।
सैमस्टेफेंस

28

मेरा समाधान:

ALTER TABLE table_name CHANGE column_name column_name type DEFAULT NULL

उदाहरण के लिए:

ALTER TABLE SCHEDULE CHANGE date date DATETIME DEFAULT NULL;


3

मेरा समाधान @Krishnrohit के समान है:

ALTER TABLE `table` CHANGE `column_current_name` `new_column_name` DATETIME NULL;

मेरे पास वास्तव में कॉलम सेट था NOT NULLलेकिन उपरोक्त क्वेरी के साथ इसे बदल दिया गया थाNULL

पी एस मैं यह एक पुराना धागा जानता हूं, लेकिन कोई भी यह स्वीकार नहीं करता CHANGEहै कि यह सही भी है।


-5

उपयोग: ALTER TABLE mytable MODIFY mycolumn VARCHAR(255);


18
यह बेहतर होगा यदि आपका जवाब अन्य उत्तरों के शीर्ष पर अतिरिक्त मूल्य प्रदान करता है। इस मामले में, आपका जवाब अतिरिक्त मूल्य प्रदान नहीं करता है, क्योंकि डैनियल स्पाइवाक ने पहले ही उस समाधान को पोस्ट किया है। यदि पिछला उत्तर आपके लिए मददगार था, तो आपको पर्याप्त प्रतिष्ठा होने के बाद उसे वोट देना चाहिए
लुइज़ क्रूज़
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.