2011-06-15 13 views
15

Possible Duplicate:
Integer out of range on Postgres DBहम बड़े पूर्णांक को कैसे परिभाषित करते हैं?

जब मेरा कोड 100001857905525 जैसे बड़े नंबरों को उसकेोकू पर डेटाबेस में डालने का प्रयास करता है, तो मुझे त्रुटि मिलती है:

ActiveRecord::StatementInvalid (PGError: ERROR: integer out of range) 

कॉलम को पूर्णांक के रूप में परिभाषित किया गया है। मैं एक sqlite3 डेटाबेस का उपयोग करें। मेरा कोड उसकेोकू में तैनात है।

जब मैं स्थानीयहोस्ट पर चलता हूं तो यह ठीक काम करता है। लेकिन जब मैं उसकेोकू पर कोड चलाता हूं तो मुझे उपर्युक्त त्रुटि मिलती है। शायद मैं कॉलम को एक लंबे पूर्णांक या डबल के रूप में परिभाषित करके समस्या को हल कर सकता हूं। रूबी/रेल में मैं यह कैसे करूं?

+1

इस सवाल पहले से ही कहा गया है और यहां उत्तर http://stackoverflow.com/questions/999570/integer ऑफ-ऑफ-रेंज-ऑन-पोस्टग्रेस-डीबी –

+0

SQLite बहुत क्षमा कर रहा है (यानी सभी टेक्स्ट टेक्स्ट है, इसलिए स्ट्रिंग आकार पर कोई सीमा नहीं है, उनके [डेटाटाइप] (http://www.sqlite.org/datatype3) को देखकर। एचटीएमएल) ऐसा प्रतीत होता है कि इनट्स 8 बिट तक जरूरी हो जाते हैं), लेकिन पोस्टग्रेएसक्यूएल (क्या हेरोकू का उपयोग करता है) प्रदर्शन के लिए अनुकूलित किया गया है, इसलिए आपको सही प्रकार का पता लगाना होगा। यह कोड पेश करने का एक सूक्ष्म तरीका है जो विकास में काम करता है लेकिन उत्पादन में नहीं। –

उत्तर

35

अपने प्रवास में, तो आप इस कोशिश कर सकते:

t.integer :uid, :limit => 8 

जो एक 64-बिट पूर्णांक स्तंभ का उत्पादन करेगा।

(बस integer कोई limit निर्दिष्ट के साथ, PostgreSQL docs के अनुसार 10 अंक करने के लिए अनुमति देगा।)

+0

धन्यवाद !! यह कोशिश करेंगे। –

+0

एक आकर्षण की तरह काम करता है। धन्यवाद – Crystark

+0

कॉलम का डिफ़ॉल्ट मान 8 अंकों से अधिक संख्या में सेट किया गया था, लेकिन यह अभी भी काम करेगा, कॉलम के लिए बिगिन सेट करने का यह एक अजीब तरीका है !! अधिक जानकारी यहां उपलब्ध है: https://moeffju.net/blog/using-bigint-columns-in-rails-migrations – whizcreed

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