2011-08-15 17 views
17

एक बड़े कॉलम के साथ एक टेबल बनाने की कोशिश कर इसके बजाय एक मानक पूर्णांक कॉलम बनाता है। क्या गलत हो सकता है? मुझे नहीं पता कि कहां दिखना शुरू करें।रेल माइग्रेशन: PostgreSQL पर बिगिंट असफल रहा प्रतीत होता है?

मैं प्रवास में यह उपयोग कर रहा हूँ:

create_table :table_name do |t| 
    t.integer :really_big_int, limit: 8 
end 

मैं रूबी 1.9.2, PostgreSQL 9.0.3 और रेल 3.0.9 का उपयोग कर रहा हूँ। मैंने डेटाबेस छोड़ दिया है और कई बार माइग्रेशन चलाया है और यह अभी भी बड़ा कॉलम नहीं बना रहा है।

+0

बहुत अजीब। Schema.rb या आपके पीजी स्कीमा को देखकर आप यह कैसे निर्धारित कर रहे हैं कि यह एक पूर्णांक कॉलम बनाता है? –

+0

मैं दोनों जगहों पर जांच कर रहा हूं। मैंने इसे एक स्ट्रिंग कॉलम का उपयोग करके हल किया है, हालांकि मैं अभी भी जानना चाहता हूं कि यह क्यों काम नहीं करेगा। – Lonecat

+1

इस पर कोई अपडेट, ऐसा लगता है कि: सीमा => 8 पोस्टग्रेज़ में बड़ा कॉलम नहीं बना रहा है। –

उत्तर

22

किसी कारण से निर्माण तालिका को बड़ा पसंद नहीं है। हालांकि bigint डेटा प्रकार का उपयोग add_columm साथ यह कर सकते हैं:

add_column :table_name, :really_big_int, :bigint 

तो आप उस सीमा सामान की जरूरत नहीं है।

+1

रेल 3.2.2 और 'पीजी' मणि (संस्करण 0.14.0) का उपयोग करके यह काम करता है। पुराने संस्करणों में चेक नहीं किया है। – Lonecat

1

मैं t.column का उपयोग करके एक बड़ा निर्माण करने में सक्षम था। यह उपयोगी है अगर आप तालिका में कॉलम ऑर्डर को नियंत्रित करना चाहते हैं।

create_table :table_name do |t| 
    t.string :other_column 
    t.column :really_big_int, :bigint 
    . 
    . 
    t.timestamps 
end 

मैं पीजी मणि संस्करण 0.15.1 (x86-mingw32) के साथ रेल 3.2.12 का उपयोग कर रहा हूं।

19

इस रेल में काम करता है 4

t.column :really_big_int, :bigint 
2

में रेल 4.2 + की तरह आप का उपयोग कर सकते हैं:

create_table :table_name do |t| 
    t.bigint :really_big_int 
end 
3

रेल 5.0.0.1 यह काम करता है:

def change 
    create_table :huge do |t| 
     t.integer :big_bastard, limit: 8 
    end 
    end