2011-11-13 21 views
5

यह अब तक काम किया पर 0 पर रीसेट हो लेकिन जब मैं सेवा पुनरारंभ करें, डेटाबेस मेरी मेज के लिए स्वत: वृद्धि मान खो दिया है। यह निश्चित रूप से मेरे प्रश्नों के साथ कुछ है, क्योंकि मैंने हाल ही में अपनी टेबल को संशोधित नहीं किया है। यह क्या हो सकता है?ऑटो वेतन वृद्धि हर सेवा पुनः आरंभ

+0

सभी संग्रहित प्रक्रियाओं की एक सूची प्राप्त और चलाता है तो आप अपने DB पर है। कुछ संदिग्ध के लिए इसे जांचें। सर्वर को दोबारा स्थापित करने का प्रयास करें कि क्या यह –

+0

कोई ट्रिगर नहीं करता है, कोई प्रक्रिया नहीं है, यह केवल सेवा पुनरारंभ पर होती है, अगर मैं तालिका को छोटा कर देता हूं और शुरू करता हूं तो यह पूरी तरह से काम करता है। – Chobeat

+0

सेवा पुनरारंभ करने से आपका मतलब है कि आप mysql-server को पुनरारंभ करें? – Dimme

उत्तर

2

प्रलेखित व्यवहार है यही कारण है, यह एक बग नहीं है।
जब सर्वर शुरू होता है, यह प्रत्येक (InnoDB) तालिका का निर्धारण क्या नया auto_increment मान होना चाहिए के माध्यम से चला जाता है। http://dev.mysql.com/doc/refman/5.0/en/innodb-auto-increment-handling.html से:

InnoDB सर्वर के चलते तक इन-मेमोरी ऑटो-वृद्धि काउंटर का उपयोग करता है। जब सर्वर बंद कर दिया और पुन: प्रारंभ होने, InnoDB काउंटर मेज पर पहले सम्मिलित करें के लिए प्रत्येक तालिका के लिए, के रूप में पहले वर्णित reinitializes।

यह समान है जब आप DDL, इस तरह के engine फेरबदल के रूप में का कारण बनता है कि एक मेज के पुनर्निर्माण को तैनात कुछ करता है - यहां तक ​​कि यह एक ही मूल्य पर वह पहले था फेरबदल।

+0

यह स्पष्ट नहीं करता कि यह शून्य क्यों होगा। –

0

ALTER तालिका TABLE_NAME इंजन = MyISAM मेरे लिए

काम करता है। InnoDB एआई को स्मृति में संग्रहीत करता है, इसलिए जब MySQL सर्वर पुनरारंभ होता है तो यह पंक्तियों की वर्तमान संख्या + पर रीसेट हो जाता है। इसलिए यदि आपके तालिका खाली है जब आप सर्वर को पुनः आरंभ, यह करने के लिए 1.

दूसरी ओर MyISAM अच्छी तरह से बनाया गया था रीसेट हो जाएगा।

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