MySQL में AUTO_INCREMENT को रीसेट कैसे करें?




auto-increment (12)

मैं एक फ़ील्ड के AUTO_INCREMENT को रीसेट कैसे कर सकता हूं? मैं इसे फिर से 1 से गिनना शुरू करना चाहता हूं।


"ऑपरेशंस" टैब के नीचे phpmyadmin के साथ एक बहुत ही आसान तरीका है, आप तालिका विकल्पों में सेट कर सकते हैं, जो संख्या आप चाहते हैं उसे स्वत: जोड़ना।


अनुक्रम को रीसेट करने के लिए आप बस तालिका को छोटा कर सकते हैं

TRUNCATE TABLE TABLE_NAME

आप काउंटर को रीसेट कर सकते हैं:

ALTER TABLE tablename AUTO_INCREMENT = 1

InnoDB के लिए आप auto_increment मान को उच्चतम वर्तमान अनुक्रमणिका के निचले या बराबर सेट नहीं कर सकते हैं। ( ViralPatel से उद्धरण):

ध्यान दें कि आप काउंटर को पहले से इस्तेमाल किए गए किसी भी से कम या उसके बराबर मान पर रीसेट नहीं कर सकते हैं। MyISAM के लिए, यदि मान वर्तमान में AUTO_INCREMENT कॉलम में अधिकतम मान से कम या उसके बराबर है, तो मान वर्तमान अधिकतम प्लस वन पर रीसेट हो जाता है। InnoDB के लिए, यदि मान कॉलम में वर्तमान अधिकतम मान से कम है, तो कोई त्रुटि नहीं होती है और वर्तमान अनुक्रम मान परिवर्तित नहीं होता है।

किसी अन्य तालिका से MAX मान का उपयोग करके एक MySQL AutoIncrement को रीसेट करने का तरीका देखें ? एक स्वीकार्य मूल्य गतिशील रूप से कैसे प्राप्त करें।


इस प्रश्न के उच्चतम रेटेड उत्तरों सभी "आपके आउटलुक AUTO_INCREMENT = मान" को अनुशंसा करते हैं। हालांकि, यह केवल तब काम करता है जब परिवर्तन में मूल्य autoincrement कॉलम के वर्तमान अधिकतम मान से अधिक है। MySQL दस्तावेज़ के अनुसार :

आप काउंटर को पहले से इस्तेमाल किए गए किसी भी से कम या उसके बराबर मान पर रीसेट नहीं कर सकते हैं। MyISAM के लिए, यदि मान वर्तमान में AUTO_INCREMENT कॉलम में अधिकतम मान से कम या उसके बराबर है, तो मान वर्तमान अधिकतम प्लस वन पर रीसेट हो जाता है। InnoDB के लिए, आप वैकल्पिक तालिका का उपयोग कर सकते हैं ... AUTO_INCREMENT = मान MySQL 5.0.3 के रूप में, लेकिन यदि मान कॉलम में वर्तमान अधिकतम मान से कम है, तो कोई त्रुटि नहीं होती है और वर्तमान अनुक्रम मान परिवर्तित नहीं होता है।

संक्षेप में, आप ऑटोइनक्रिकमेंट कॉलम के मान को बढ़ाने के लिए केवल ऑटोकक्रिकमेंट को बदल सकते हैं, इसे 1 तक रीसेट नहीं कर सकते हैं, क्योंकि ओपी प्रश्न के दूसरे भाग में पूछता है। उन विकल्पों के लिए जो वास्तव में आपको अपने वर्तमान अधिकतम से AUTO_INCREMENT को नीचे की ओर सेट करने की अनुमति देते हैं, ऑटो वृद्धि वृद्धि प्राथमिक कुंजी को रीडर / रीसेट करें


एक तालिका के लिए ऑटो वृद्धि काउंटर दो तरीकों से सेट किया जा सकता है:

  1. एक प्रश्न निष्पादित करके, जैसे कि पहले से ही समझाया गया है:

    ALTER TABLE <table_name> AUTO_INCREMENT=<table_id>;

  2. वर्कबेंच या अन्य दृश्य डेटाबेस डिज़ाइन टूल का उपयोग करना। मैं वर्कबेंच में दिखा रहा हूं कि यह कैसे किया जाता है - लेकिन यह अन्य टूल में भी बहुत अलग नहीं होना चाहिए। वांछित तालिका पर राइट क्लिक करके और संदर्भ मेनू से Alter table चुनकर। नीचे आप टेबल को बदलने के लिए सभी उपलब्ध विकल्पों को देख सकते हैं। Options चुनें और आपको यह फॉर्म मिल जाएगा:

    फिर छवि में दिखाए गए अनुसार Auto increment के क्षेत्र में वांछित मान सेट करें। यह मूल रूप से पहले विकल्प में दिखाए गए क्वेरी को निष्पादित करेगा।


नवीनतम प्लस वन आईडी को अपडेट करने के लिए

 ALTER TABLE table_name AUTO_INCREMENT = 
 (SELECT (id+1) id FROM table_name order by id desc limit 1);

मेरा सुझाव है कि आप क्वेरी ब्राउज़र पर जाएं और निम्न कार्य करें:

  1. स्कीमाटा पर जाएं और उस तालिका को ढूंढें जिसे आप बदलना चाहते हैं।
  2. राइट क्लिक करें और प्रतिलिपि बनाएँ कथन का चयन करें।
  3. एक परिणाम टैब खोलें और उनके निर्माण कथन पेस्ट करें।
  4. निर्माण कथन की अंतिम पंक्ति पर जाएं और Auto_Increment = N की तलाश करें, (जहां एन auto_increment फ़ील्ड के लिए वर्तमान संख्या है।)
  5. 1 के साथ एन बदलें।
  6. Ctrl + एंटर दबाएं।

तालिका में नई पंक्ति दर्ज करने के बाद Auto_increment को एक बार रीसेट करना चाहिए।

मुझे नहीं पता कि क्या होगा यदि आप एक पंक्ति जोड़ने की कोशिश करते हैं जहां auto_increment फ़ील्ड मान पहले से मौजूद है।

उममीद है कि इससे मदद मिलेगी!


मेरे लिए काम करने वाला सबसे अच्छा समाधान:

ALTER TABLE my_table MODIFY COLUMN ID INT(10) UNSIGNED;
COMMIT;
ALTER TABLE my_table MODIFY COLUMN ID INT(10) UNSIGNED AUTO_INCREMENT;
COMMIT;

इसका तेज़, innoDB के साथ काम करता है, और मुझे वर्तमान अधिकतम मूल्य जानने की आवश्यकता नहीं है! इस तरह ऑटो वृद्धि काउंटर रीसेट हो जाएगा और यह स्वचालित रूप से अधिकतम मूल्य से शुरू हो जाएगा।


यह खाली टेबल के लिए है:

ALTER TABLE `table_name` AUTO_INCREMENT = 1;

यदि आपके पास डेटा है लेकिन आप इसे साफ करना चाहते हैं, तो मैं इसका उपयोग करने की अनुशंसा करता हूं:

ALTER TABLE `table_name` DROP `auto_colmn`;
ALTER TABLE `table_name` ADD  `auto_colmn` INT( {many you want} ) NOT NULL AUTO_INCREMENT FIRST ,ADD PRIMARY KEY (`auto_colmn`);

सबसे अच्छा तरीका एआई के साथ क्षेत्र को हटा देता है और एआई के साथ फिर से जोड़ता है, सभी तालिकाओं के लिए काम करता है


ALTER TABLE news_feed DROP id

ALTER TABLE news_feed ADD  id BIGINT( 200 ) NOT NULL AUTO_INCREMENT FIRST ,ADD PRIMARY KEY (id)

मैंने इसे अपनी कुछ स्क्रिप्ट में उपयोग किया, आईडी फ़ील्ड ड्रॉप किया गया और फिर पिछली सेटिंग्स के साथ वापस जोड़ा गया, डेटाबेस तालिका के भीतर मौजूद सभी मौजूदा फ़ील्ड नए ऑटो वृद्धि मूल्यों से भरे हुए हैं, यह इनो डीबी के साथ भी काम करना चाहिए।

ध्यान दें कि तालिका के भीतर सभी फ़ील्ड रिकॉर्डेड होंगे और अन्य आईडी होंगे !!!


ALTER TABLE tablename AUTO_INCREMENT = 1




auto-increment