PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

कॉलम प्रकार को रेल में लंबे समय तक स्ट्रिंग में बदलना

आपको text का उपयोग करना चाहिए रेल के साथ यदि आप बिना लंबाई सीमा वाली स्ट्रिंग चाहते हैं। इस तरह एक माइग्रेशन:

def up
  change_column :your_table, :your_column, :text
end
def down
  # This might cause trouble if you have strings longer
  # than 255 characters.
  change_column :your_table, :your_column, :string
end

चीजों को सुलझाना चाहिए। आप :null => false चाह सकते हैं या उसके अंत में कुछ अन्य विकल्प भी।

जब आप string . का उपयोग करते हैं एक स्पष्ट सीमा के बिना कॉलम, रेल एक अंतर्निहित :limit => 255 add जोड़ देगा . लेकिन अगर आप text . का उपयोग करते हैं , आपको डेटाबेस द्वारा समर्थित किसी भी प्रकार की मनमानी लंबाई वाली स्ट्रिंग मिल जाएगी। PostgreSQL आपको varchar . का उपयोग करने की अनुमति देता है बिना लंबाई के कॉलम लेकिन अधिकांश डेटाबेस उसके लिए एक अलग प्रकार का उपयोग करते हैं और रेल को varchar के बारे में पता नहीं है बिना लंबाई के। आपको text . का उपयोग करना होगा रेल में text प्राप्त करने के लिए PostgreSQL में कॉलम। PostgreSQL में text . प्रकार के कॉलम के बीच कोई अंतर नहीं है और एक प्रकार का varchar (लेकिन varchar(n) है को अलग)। इसके अलावा, यदि आप PostgreSQL के शीर्ष पर तैनाती कर रहे हैं, तो :string का उपयोग करने का कोई कारण नहीं है। (उर्फ varchar ) बिल्कुल भी, डेटाबेस text . को ट्रीट करता है और varchar(n) varchar(n) . के लिए अतिरिक्त लंबाई बाधाओं को छोड़कर आंतरिक रूप से समान; आपको केवल varchar(n) . का उपयोग करना चाहिए (उर्फ :string ) यदि आपके पास स्तंभ आकार पर कोई बाहरी बाधा है (जैसे कि एक सरकारी प्रपत्र जो कहता है कि प्रपत्र 897/B पर फ़ील्ड 432 23 वर्ण लंबा होगा)।

इसके अलावा, यदि आप string . का उपयोग कर रहे हैं कॉलम कहीं भी, आपको हमेशा :limit . निर्दिष्ट करना चाहिए अपने आप को एक अनुस्मारक के रूप में कि एक सीमा है और आपको यह सुनिश्चित करने के लिए मॉडल में एक सत्यापन होना चाहिए कि सीमा पार नहीं हुई है। यदि आप सीमा से अधिक हो जाते हैं, तो PostgreSQL शिकायत करेगा और अपवाद उठाएगा, MySQL चुपचाप स्ट्रिंग को छोटा कर देगा या शिकायत करेगा (सर्वर कॉन्फ़िगरेशन के आधार पर), SQLite इसे पास करने देगा, और अन्य डेटाबेस कुछ और करेंगे (शायद शिकायत करें) ।

साथ ही, आपको उसी डेटाबेस के शीर्ष पर विकास, परीक्षण और तैनाती भी करनी चाहिए (जो आमतौर पर हेरोकू में पोस्टग्रेएसक्यूएल होगा), आपको डेटाबेस सर्वर के समान संस्करणों का भी उपयोग करना चाहिए। डेटाबेस (जैसे GROUP BY का व्यवहार) के बीच अन्य अंतर हैं जिनसे ActiveRecord आपको इंसुलेट नहीं करेगा। हो सकता है कि आप पहले से ही ऐसा कर रहे हों, लेकिन मैंने सोचा कि मैं इसका उल्लेख वैसे भी करूंगा।

अपडेट करें :ActiveRecord के नए संस्करण varchar . को समझते हैं एक सीमा के बिना, कम से कम PostgreSQL के साथ, आप कह सकते हैं:

change_column :your_table, :your_column, :string, limit: nil

एक varchar(n) . को बदलने के लिए कॉलम से varchar . text और varchar जहां तक ​​पोस्टग्रेएसक्यूएल का संबंध है, वे अभी भी वही हैं, लेकिन कुछ फॉर्म निर्माता उनके साथ अलग व्यवहार करेंगे:varchar एक <input type="text"> प्राप्त करता है जबकि text एक बहु-पंक्ति प्राप्त करता है <textarea>



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. डुप्लिकेट पंक्तियां हटाएं (सभी डुप्लिकेट हटाएं नहीं)

  2. PostgreSQL में कल की तारीख कैसे प्राप्त करें

  3. PostgreSQL पर क्वेरी करने के लिए दोहरे उद्धरण को छोड़ना

  4. PostgreSQL से PL/pgSQL आउटपुट को CSV फ़ाइल में सेव करें

  5. varchar की तुलना char . से करें