Rails का उपयोग कर MySQL डीबी में लंबे पाठ को कैसे स्टोर करें? - mysql, रूबी-ऑन-रेल, टेक्स्ट

मैं एक लंबे पाठ को स्टोर करने की कोशिश कर रहा हूं (मेरे मामले में कच्चे आरएसएस फ़ीड, लेकिन एक लंबे ब्लॉग पोस्ट या इसी तरह के साथ ही एक MySQL डेटाबेस में भी हो सकता है।

मेरे पास माइग्रेशन है:

change_column :contents, :description, :longtext

लेकिन यह एक schema.rb देता है:

t.text     "description",       :limit => 2147483647

जब सीमा वास्तव में 42 9 4 9 672 9 5 पर निर्धारित की जानी चाहिए।

रेल एक ऊपरी सीमा क्यों लगाती है जो कि आधा संभव है?

उत्तर:

उत्तर № 1 के लिए 15

मुझे नहीं पता कि रेल समर्थित हैं या नहीं: आधिकारिक तौर पर पिछले संस्करणों में लांगटेक्स्ट, लेकिन वर्तमान संस्करण में रेल दस्तावेज,: लांगटेक्स्ट वास्तव में कानूनी डेटाटाइप के रूप में निर्दिष्ट नहीं है। मुझे लगता है कि यह केवल MySQL एडाप्टर की सुविधा है जो इसका अनुवाद करता है: टेक्स्ट।

ऐसा करने का सही तरीका तब है:

change_column: सामग्री, विवरण,: पाठ,: सीमा => 42 9 4 9 672 9 5

यह ध्यान रखें कि बहु-बाइट वर्णों का उपयोग करते समय प्रभावी अधिकतम आकार कम होता है।

संपादित करें: इसके बारे में एक दूसरे के बारे में सोचते हुए और यह समझ में आता है कि रेल आकार को कम कर देता है। फिर से पढ़ना mysql दस्तावेज़ इस विषय पर, वे बात करते हैं प्रभावी आकार।मुझे लगता है कि 2-बाइट यूटीएफ -8 अक्षरों से भरे 2147483647 को प्रभावी ढंग से 42 9 4 9 672 9 5 का प्रभावी आकार हो सकता है। चूंकि utf-8 रूबी 1.9 (कम से कम मेरी मशीन पर) में डिफ़ॉल्ट एन्कोडिंग है, यह करने का एकमात्र सही तरीका है। मुझे लगता है ?!

ruby-1.9.2-p136 :002 > "".encoding
=> #<Encoding:utf-8>

संबंधित सवाल
सबसे लोकप्रिय