2011-09-27 4 views
5

मैं INSERT IGNORE का उपयोग कर 500 पंक्तियों को सम्मिलित कर रहा हूं, यदि पंक्ति पहले से मौजूद है (एक अद्वितीय क्षेत्र के आधार पर) तो यह पंक्ति को सम्मिलित नहीं करता है, तो यह कुछ भी नहीं करता है।मैं अनदेखा आवेषणों पर ऑटो वृद्धि कैसे रोकूं जो MySQL में कोई परिवर्तन नहीं करते हैं?

मेरी समस्या यह है कि केवल 10 कहते हैं कि प्रत्येक वृद्धि के लिए ऑटो वृद्धि अभी भी बढ़ जाती है, इसलिए यह 500 तक बढ़ जाती है, इसलिए मैं अपनी आईडी में अंतराल के साथ समाप्त होता हूं। मैं इसे कैसे रोकूं?

मैं कोशिश की है:

SET global innodb_autoinc_lock_mode = 0; 

लेकिन मैं त्रुटि मिलती है:

1238 - चर 'innodb_autoinc_lock_mode' है एक ही चर

मैं यह कैसे बदल सकता हूँ पढ़ा है?

+0

संभावित डुप्लिकेट: http://stackoverflow.com/questions/5655396/why-insert-ignore-increments-the-auto-increment-primary-key –

+0

लिंक के लिए धन्यवाद, मैंने इसे देखा है और संपादित किया है मैंने जो कोशिश की है उसे शामिल करने के लिए प्रश्न। – Craig

+5

यदि अंतराल हैं तो आप * देखभाल * क्यों करते हैं? – SingleNegationElimination

उत्तर

10

MySQL's documentation के अनुसार, innodb_autoinc_lock_mode गतिशील चर नहीं है और इस प्रकार MySQL चल रहा है, जबकि इस प्रकार बदला नहीं जा सकता है।

आप या तो कमांड लाइन

--innodb_autoinc_lock_mode=0 

या विन्यास फाइल में (mysql.ini)

innodb_autoinc_lock_mode=0 

यह ध्यान देने योग्य है कि आप (नहीं पढ़ना चाहिए में सेट करना होगा : कभी नहीं) निरंतर आईडी अनुक्रम पर भरोसा करते हैं। रोलबैक या असफल लेनदेन के परिणामस्वरूप अंतराल हो सकता है।

+0

धन्यवाद। मैंने उस लाइन को my.cnf फ़ाइल में जोड़ा और mysql को पुनरारंभ किया – Craig

संबंधित मुद्दे