2011-03-20 13 views
5

मैं एक छोटे से वेब आधारित experiemnt फेसबुक UIDs का उपयोग कर अद्वितीय उपयोगकर्ताओं को सत्यापित करने के बराबर चल रही है BigInt करने के लिए।परिवर्तित तालिका सूचकांक MySQL

हाल ही में मुझे पता चला है कि UIDs बड़ा की तुलना में मैं कुछ उपयोगकर्ताओं के बीच महसूस किया जा सकता है, तो मेरे पूर्णांक आधारित प्रणाली अब अपर्याप्त है और मैं BigInt में बदलने की जरूरत है।

मुझे लगता है मैं पहले से ही है परिणामों को खोने का जोखिम नहीं कर सकता, लेकिन इतना है कि सूचकांक uid युक्त अब bigint है तालिका बदलना होगा। वहाँ एक सूचकांक स्तंभ के प्रकार बदलने किसी विशेष मुद्दे हैं, और यह रूप में सरल होगा:

ALTER TABLE breadusers MODIFY userid bigint; 

?

+0

हां, आगे बढ़ें और बिगिनट में बदलें, कुछ भी नहीं तोड़ देगा। – Pentium10

+0

धन्यवाद - माफ करना, यह एक नहीं बल्कि बुनियादी सवाल था, लेकिन जब एक जवाब अनुसंधान करने के लिए कोशिश कर रहा सुझाव सूचकांक प्रकार बदलने जटिल बातें हो सकता है कि चीजें पढ़ें। मुझे लगता है कि बदलते समय समस्याएं हो सकती हैं, उदाहरण के लिए, स्ट्रिंग से int ... –

+0

यह भी ध्यान दें कि यदि आपके पास विदेशी कुंजी संदर्भ हैं तो आपको शायद कॉलम छोड़ना होगा और http://stackoverflow.com/questions देखें/9018286/mysql-alter-int-column-to-bigint-with-foreign-keys – lrkwz

उत्तर

3

सिद्धांत रूप में यह पूरी तरह से ठीक हो सकता है, हालांकि यह डेटा वास्तव में मामलों, मुझे लगता है कि आप इस मामले में वैसे भी हाल ही में एक बैकअप कुछ धराशायी हो जाता है।

यह कहा गया है कि, शायद मैं फेसबुक यूआईडी को एक स्ट्रिंग के रूप में स्टोर करने का लुत्फ उठाऊंगा (यानी VARCHAR फ़ील्ड में) और बस एक सामान्य ऑटो-वर्धित आईडी फ़ील्ड है। फिर फिर, यह एक अलग सवाल का जवाब है। :-)

+0

आप एक उचित बिंदु बनाने, और अगर मैं भविष्य में इसी तरह कुछ करने के लिए कर रहा हूँ, मैं चीजों को उस तरह से कर सकते हैं। –

+0

यह प्रश्न देखें http://stackoverflow.com/questions/2172126/user-id-big-int-int-or-string – deefactorial

0

फेसबुक यूआईडी भाग के लिए, मैं BIGINT (64) के लिए जाने के लिए आप सुझाव है। फेसबुक ब्लॉग का उत्तर यहां दिया गया है: https://developers.facebook.com/blog/post/45/

+1

यह 'bigint (64)' नहीं है, यह 'bigint (20)' है। फेसबुक ने केवल 'bigint' का उपयोग करने के लिए कहा क्योंकि यह 64 बिट पूर्णांक है। एसक्यूएल वाक्य रचना के लिए ही है, यह 'bigint (20)' 'अहस्ताक्षरित bigint' में अधिकतम संख्या है के बाद से' 18,446,744,073,709,551,615' (एक 20 अंकों की संख्या) हो सकता था। ध्यान दें कि 'बिगिंट (20)' में '20' केवल प्रारूपण उद्देश्य के लिए है। यह डेटा लंबाई (बाइट या बिट में) की अवधि में कुछ भी प्रभावित नहीं करता है। Bigint हमेशा 64 बिट a.k.a 8 बाइट डेटा में संग्रहीत। किसी भी प्रोग्रामिंग भाषाओं में 'लंबी' और 'हस्ताक्षरित लंबी' के समान। – Kurotsuki

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