2010-08-14 8 views

उत्तर

90

और सिर्फ सीमा निकालना चाहते हैं, तो आप सिर्फ यह कर सकते हैं:

change_column :users, :column, :string, :limit => 255 

255 स्ट्रिंग कॉलम के लिए मानक लंबाई है, और रेल केवल उस सीमा को मिटा देंगे जो आपने पहले निर्दिष्ट किया था।

अपडेट किया गया:

इस रेल संस्करणों की संख्या में काम करता है, तो आप शायद बेहतर ग्यूसेप के जवाब में की तरह nil उपयोग करने के लिए अनुकूल होगा।

change_column :users, :column, :string, :limit => nil 

इसका मतलब है कि केवल एक चीज आप गलत कर रहे थे nil के बजाय null उपयोग कर रहा था।

0

स्ट्रिंग्स कुछ नहीं है सबसे डेटाबेस समर्थन: आप varchar(SIZE) परिभाषा आकार निर्दिष्ट करना होगा।
हालांकि आप कोशिश कर सकते हैं, मैं व्यक्तिगत रूप से :limit => BIG_ENOUGH_NUMBER के साथ जाऊंगा। आप बहुत बड़े ग्रंथों के लिए सीएलओबी प्रकार का उपयोग करने पर भी विचार कर सकते हैं।

0

यह DB-चालक-स्वतंत्र एक इस तरह ख़ाली लिखना चाहिए करने के लिए: यदि आपने किसी प्रवास में एक सीमा को निर्धारित करते हैं

add_column :tablename, :fieldname_tmp, :text 
Tablename.reset_column_information 
Tablename.update_all("fieldname_tmp = fieldname") 
remove_column :tablename, :fieldname 
rename_column :tablename, :fieldname_tmp, :fieldname 
3

कॉलम प्रकार को :text पर बदलें। इसकी कोई सीमा नहीं है।

change_column :tablename, :fieldname, :text, :limit => nil 
+1

यह गलत है ...यदि आप बस से बदलते हैं: स्ट्रिंग से: टेक्स्ट, रेक डीबी: माइग्रेट सीमा को छोड़ देगा, जो गड़बड़ कर देगा जब आप उसेोकू रेक रेक करने की कोशिश करेंगे: स्कीमा: लोड – jpwynn

34

यहां मेरे साथ क्या हुआ।

मैंने महसूस किया कि एक स्ट्रिंग क्षेत्र मैं किसी तालिका में था उसकी सामग्री धारण करने के लिए पर्याप्त नहीं था, इसलिए मैं उस माइग्रेशन को निहित उत्पन्न:

def self.up 
    change_column :articles, :author_list, :text 
end 

माइग्रेशन चलाने के बाद, हालांकि, स्कीमा था:

create_table "articles", :force => true do |t| 
    t.string "title" 
    t.text  "author_list", :limit => 255 
end 

जो ठीक नहीं था। तो फिर मैं प्रवास "redid" इस प्रकार है:

create_table "articles", :force => true do |t| 
    t.string "title" 
    t.text  "author_list" 
end 
+0

मेरे लिए मुझे रेक डीबी की आवश्यकता है: माइग्रेट करें: रीसेट करें वास्तव में सीमा को बदलने के लिए, और उस आदेश के बारे में सावधान रहना चाहिए, क्योंकि यह डेटाबेस को छोड़ देता है। – p1100i

0

मैं आज एक ही नाव था, एक सीमा मैं हटाने की कोशिश कर:

def self.up 
    # careful, it's "nil", not "null" 
    change_column :articles, :author_list, :text, :limit => nil 
end 

इस बार, सीमा schema.rb में चला गया था एक पाठ क्षेत्र में जोड़ा गया है और यह नहीं लेगा। कई प्रवासन की कोशिश की।

रेल 4.2.7.1 रूबी 2.3.1p112

अंत में, केवल बात यह है कि काम किया और कुछ भी करने के लिए समायोजित करने के लिए मेरे लिए काम नहीं होगा की कोशिश कर रहा है 255 की एक सीमा को निर्दिष्ट किया गया था।

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