सभी नोड्स को हटाने के बाद, मैं फिर से 1 से शुरू करने के लिए नोड आईडी को कैसे रीसेट करूं?


17

मैंने परीक्षण के लिए कई टन डमी सामग्री उत्पन्न की, और फिर उन सभी को हटा दिया। जैसा कि nid ऑटो-इन्क्रीमेंट है, नव निर्मित नोड में अंतिम निर्मित nid +1 की एक nid होगी।

मैं फिर से 1 से शुरुआत कैसे कर सकता हूं?


6
सवाल यह है कि ऐसा क्यों करना चाहते हैं। यह वास्तव में मायने नहीं रखता है कि क्या एनआईडी का उपयोग किया जाता है, और इस बात की कोई गारंटी नहीं है कि यह हमेशा वैसे भी सख्ती से अनुक्रमिक है।
बेर्दिर

3
मैं बर्दीर से सहमत हूँ; किसी भी मॉड्यूल को इस तथ्य पर भरोसा नहीं करना चाहिए कि पहली नोड में आईडी 1 के बराबर है। यह उपयोगकर्ताओं की उपयोगकर्ता आईडी के समान है: आप 0 और 1 के बराबर आईडी वाले उपयोगकर्ता की उपस्थिति पर भरोसा कर सकते हैं, जो हमेशा Drupal से बनाए जाते हैं। स्थापना के दौरान, लेकिन आपको 3 के बराबर आईडी वाले उपयोगकर्ता खाते की उपस्थिति पर भरोसा नहीं करना चाहिए। अन्य मॉड्यूल अनाम उपयोगकर्ता या सुपर-उपयोगकर्ता के खाते को हटा सकते हैं, लेकिन इसे ऐसे मॉड्यूल की बग माना जाना चाहिए।
kiamlaluno

जवाबों:


13

प्लास नोड टेबल को वैसे ही नहीं काटते हैं, नोड टेबल से जुड़े कुछ अन्य टेबल होते हैं, जैसे नोड_रेविज़न, सीक्वेंस, फ़ील्ड टेबल, टैक्सोनॉमी टेबल और कई और।

ऐसा करने का कोई सुरक्षित तरीका नहीं है, यह वास्तव में आपकी साइट पर निर्भर करता है, आपको सभी तालिकाओं को अलग करना होगा और समायोजित करना होगा, जिसमें अनुक्रम तालिका सहित एक नीद है। याद रखें, यह अत्यधिक संभावना है कि आपकी साइट अनुपयोगी हो जाती है, इसलिए पहले बैकअप के बिना शुरू न करें।


1
मुझे उम्मीद है कि नोड्स के संदर्भ वाले अन्य तालिकाओं को भी खाली होना चाहिए, जब सभी नोड्स हटा दिए जाते हैं। ने कहा कि, कोई मॉड्यूल तथ्य प्रथम नोड आईडी है पर भरोसा करना चाहिए करने के लिए 1. बराबर
kiamlaluno

16
ALTER TABLE `node` AUTO_INCREMENT = 1;

पुनश्च - इस सवाल पर जवाब देने वाले अन्य: मैंने केवल सामग्री को हटाने के बाद एक छोटा सा चेक किया था और संबंधित सामग्री को वास्तव में हटा दिया गया है, नोड_रेविज़न और फ़ील्ड_ * टेबल खाली हैं। नोड_डेली वही कहता है - http://api.drupal.org/api/drupal/modules--node--node.module/function/node_delete_multiple/7

कभी-कभी माइग्रेशन प्रोजेक्ट्स पर जब आप अन्य प्लेटफ़ॉर्म (उदा। ASP + MSSQL) से माइग्रेट करते हैं, तो कभी-कभी यह बहुत सारे कारकों के कारण एनआईडी को रीसेट करने के लिए अपरिहार्य हो जाता है। मुझे यकीन है कि इसे टाला जा सकता है लेकिन समय / कोड ट्रेडऑफ़ हमेशा बना रहता है।


मैं एक बड़े पैमाने पर प्रवासन परियोजना के माध्यम से जा रहा हूँ जो कि महीनों लग रही है। विकास और परीक्षण के लिए मैं जिस साइट का उपयोग कर रहा हूं, उसमें कुछ नए नोड्स यहां और वहां जोड़े गए हैं, जो हाल के कुछ कंटेंट को खो देता है। मुझे लगता है कि आपको सभी नोड्स और टिप्पणियों को वापस रोल करने की आवश्यकता होगी, और दोनों के लिए AUTO_INCREMENT = 1 सेट करें। मैं सोच रहा था कि क्या किसी ने भी जो पलायन के लिए किया है, किसी अन्य मुद्दों में चला गया है, खासकर ड्रुपल 7 के लिए?
वेबड्रिप्स

2

SQL क्वेरी: ALTER TABLE 'node' AUTO_INCREMENT=1;

सुनिश्चित करें कि आपने ऐसा करने से पहले सभी नोड्स को हटा दिया है।


2

आप निम्न ड्रश कमांड के साथ मॉड्यूल डिलीट का उपयोग कर सकते हैं :

द्रुपाल al

सभी प्रकार के नोड्स हटाएँ, और नोड रीसेट करें, संशोधन और टिप्पणी काउंटर।

drush delete-all --reset

द्रुपाल al

यहाँ देखें

सभी प्रकार की सभी सामग्री को हटाता है।

drush delete-all-delete-content

और तब:

ALTER TABLE `node` AUTO_INCREMENT=1;
ALTER TABLE `node_revision` AUTO_INCREMENT=1;
ALTER TABLE `node_field_data` AUTO_INCREMENT=1;
ALTER TABLE `node_field_revision` AUTO_INCREMENT=1;

0

आप नोड टेबल को छोटा कर सकते हैं लेकिन, ध्यान दें कि आपको रिलेशनल फील्ड टेबल को छोटा करना चाहिए, यदि आप सिर्फ 1 से इंक्रीमेंट आईडी शुरू करना चाहते हैं तो आप इसका उपयोग कर सकते हैं

ALTER TABLE  `node` AUTO_INCREMENT=1

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

@ यदि आप नोड और पुनरीक्षण नोड तालिका को काटते हैं, तो आपको कोई समस्या नहीं है। मैं इसका परीक्षण करता हूं और समस्या नहीं है
शहाब

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