2010-11-05 5 views
9

पर पोस्टग्रेएसक्यूएल डीबी में 255 से अधिक वर्णों को संग्रहीत करना मैं उसकाोकू उपयोग कर रहा हूं, और ऐसा करने में, मैं पोस्टग्रेस्क्ल में अपना पहला प्रयास कर रहा हूं। शायद मैं इसे विकास में कभी नहीं मिला, लेकिन मैं अपने डेटाबेस में प्रविष्टियों को सहेजने में असमर्थ हूं जो 255 वर्णों से अधिक हैं। क्या इसके चारों ओर एक रास्ता है? वर्तमान में मैं केवल संदेश डेटा स्टोर करने के लिए स्ट्रिंग का उपयोग कर रहा हूं।हैरोकू

दूसरा, अगर 255 से अधिक वर्णों को स्टोर करने का वास्तव में कोई तरीका है, तो क्या माइग्रेशन का उपयोग करके मेरे संदेश स्ट्रिंग को इस रूप में परिवर्तित करने का एक अच्छा तरीका है? मेरा ऐप वर्तमान में लाइव और उपयोग में है।

धन्यवाद!

उत्तर

22

अपने माइग्रेशन प्रकार पर string के बजाय text का उपयोग करें।


एक प्रवास

  1. script/generate migration change_string_to_text
  2. change_column :model, :attribute, :text
  3. rake db:migrate
+0

माइग्रेशन का उपयोग कर मौजूदा स्ट्रिंग कॉलम प्रकार को बदलने का कोई तरीका है? – goddamnyouryan

+2

हाँ, जवाब देखें मैंने इसे अपडेट किया – s84

+0

यह सही है, धन्यवाद। मुझे नहीं पता था कि माइग्रेशन गुणों को बदल सकता है – goddamnyouryan

9

बस @ Codeglot के जवाब पर विस्तार करने के लिए बदलने के लिए, :text (अनिवार्य) असीमित-लंबाई स्ट्रिंग्स के लिए है । :stringlimit:1234 विकल्प के साथ उस लंबाई तक स्ट्रिंग को सीमित कर देगा। पोस्टग्रेज़ पर, :string, limit:nil:text के साथ प्रभावी रूप से समानार्थी है। हालांकि कुछ डेटाबेस VARCHAR, VARCHAR (n), और टेक्स्ट प्रकार को विभिन्न तरीकों से संग्रहीत करते हैं, जिससे प्रदर्शन विचारों की ओर अग्रसर होता है, पोस्टग्रेस उन्हें सभी को उसी तरह स्टोर करता है।

तो यदि आप 255 वर्णों से अधिक होना चाहते हैं लेकिन पूरी तरह से असंबद्ध नहीं हैं, तो आप :string, limit:1234 का उपयोग कर सकते हैं। वैकल्पिक रूप से, आप :text का उपयोग कर सकते हैं और सत्यापन के माध्यम से लंबाई को प्रतिबंधित कर सकते हैं।

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