2014-12-04 9 views
6

में createIndex() का उपयोग करते समय विभिन्न विकल्पों में त्रुटि पहले से मौजूद है, इसलिए मैं मोंगोडीबी जावा चालक को 2.12.4 में अपग्रेड कर रहा हूं जहां ensureIndex() विधि को हटा दिया गया है। मैं इसके बजाय createIndex() विधि का उपयोग कर रहा हूं जो दस्तावेज़ों से ensureIndex() के समान funciton जैसा लगता है। हालांकि, जब मैं उत्पादन में इस विधि का उपयोग करता हूं, तो मुझे निम्न त्रुटि मिलती है -नवीनतम मोंगोडीबी जावा ड्राइवर

{ "serverUsed" : "X.X.X.X" , "ok" : 0.0 , "errmsg" : "Index with name: <index_name> already exists with different options" , "code" : 85} 

ऐसा क्यों होता है? क्या कोई इस से मेरी मदद कर सकता है?

धन्यवाद

उत्तर

8

नए बनाने से पहले अपने मौजूदा इंडेक्स को हटाने का प्रयास करें।

आप के बारे में इन अनुक्रमित के लिए उत्पादन डाउनटाइम आदि में चिंतित हैं, तो आप कर सकते हैं:

  1. एक दूसरे सूचकांक सिर्फ एक आप एक अलग नाम के साथ उत्पादन अब पर है की तरह जोड़ें।
  2. मौजूदा
  3. पुनः आरंभ सर्वर को नष्ट ताकि आपके जावा कोड में सूचकांक के रूप में की उम्मीद
  4. अपना डुप्लिकेट अनुक्रमणिका हटाने बनाई गई है।
4

क्या शावर का जवाब बहुत अच्छा होगा, हालांकि वास्तव में इस मुद्दे को संबोधित नहीं करता है जो गुरुत्वाकर्षण हाइलाइट कर रहा है।

createIndex इस त्रुटि के साथ विफल हो जाएगा यदि आप एक ही क्रम में एक ही फ़ील्ड पर एक इंडेक्स बनाने की कोशिश कर रहे हैं, लेकिन विभिन्न विकल्पों के साथ। ऐसा इसलिए है क्योंकि इंडेक्स विकल्प इंडेक्स के पास बहुत अलग गुण हो सकते हैं। यह स्पष्ट है जब आप unique ध्वज के साथ एक इंडेक्स पर विचार करते हैं।

यदि आप उसी क्षेत्र के साथ createIndex पर कॉल करते हैं, वही आदेश, और वही विकल्प, तो आप अपेक्षा करते हैं कि यह व्यवहार करेगा; संग्रह की अनुक्रमणिका में कोई बदलाव नहीं कर रहा है, और यह अपवाद नहीं फेंक देगा।

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