क्या निम्न सही है? सीमा के बिनारेल माइग्रेशन में, आप फ़ील्ड की सीमा को कैसे हटा सकते हैं
change_column :tablename, :fieldname, :limit => null
क्या निम्न सही है? सीमा के बिनारेल माइग्रेशन में, आप फ़ील्ड की सीमा को कैसे हटा सकते हैं
change_column :tablename, :fieldname, :limit => null
और सिर्फ सीमा निकालना चाहते हैं, तो आप सिर्फ यह कर सकते हैं:
change_column :users, :column, :string, :limit => 255
255 स्ट्रिंग कॉलम के लिए मानक लंबाई है, और रेल केवल उस सीमा को मिटा देंगे जो आपने पहले निर्दिष्ट किया था।
अपडेट किया गया:
इस रेल संस्करणों की संख्या में काम करता है, तो आप शायद बेहतर ग्यूसेप के जवाब में की तरह nil
उपयोग करने के लिए अनुकूल होगा।
change_column :users, :column, :string, :limit => nil
इसका मतलब है कि केवल एक चीज आप गलत कर रहे थे nil
के बजाय null
उपयोग कर रहा था।
स्ट्रिंग्स कुछ नहीं है सबसे डेटाबेस समर्थन: आप varchar(SIZE)
परिभाषा आकार निर्दिष्ट करना होगा।
हालांकि आप कोशिश कर सकते हैं, मैं व्यक्तिगत रूप से :limit => BIG_ENOUGH_NUMBER
के साथ जाऊंगा। आप बहुत बड़े ग्रंथों के लिए सीएलओबी प्रकार का उपयोग करने पर भी विचार कर सकते हैं।
यह 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
कॉलम प्रकार को :text
पर बदलें। इसकी कोई सीमा नहीं है।
change_column :tablename, :fieldname, :text, :limit => nil
यहां मेरे साथ क्या हुआ।
मैंने महसूस किया कि एक स्ट्रिंग क्षेत्र मैं किसी तालिका में था उसकी सामग्री धारण करने के लिए पर्याप्त नहीं था, इसलिए मैं उस माइग्रेशन को निहित उत्पन्न:
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
मेरे लिए मुझे रेक डीबी की आवश्यकता है: माइग्रेट करें: रीसेट करें वास्तव में सीमा को बदलने के लिए, और उस आदेश के बारे में सावधान रहना चाहिए, क्योंकि यह डेटाबेस को छोड़ देता है। – p1100i
मैं आज एक ही नाव था, एक सीमा मैं हटाने की कोशिश कर:
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 की एक सीमा को निर्दिष्ट किया गया था।
यह गलत है ...यदि आप बस से बदलते हैं: स्ट्रिंग से: टेक्स्ट, रेक डीबी: माइग्रेट सीमा को छोड़ देगा, जो गड़बड़ कर देगा जब आप उसेोकू रेक रेक करने की कोशिश करेंगे: स्कीमा: लोड – jpwynn