2012-05-21 14 views
7

मैं कुछ दिनों से इस के साथ काम कर रहा हूं। यहां ActiveRecord त्रुटि और एप्लिकेशन ट्रेस है।ActiveRecord ArgumentError: नकारात्मक स्ट्रिंग आकार (या आकार बहुत बड़ा)

ArgumentError: negative string size (or size too big): 
EXEC sp_executesql N'SELECT [ops_jobs_join].* FROM [ops_jobs_join] 
WHERE (work_center_id = N''M*1053'' OR work_center_id = N''M*1035'' OR 
     work_center_id = N''M*1037'' OR work_center_id = N''M*1036'') AND 
     (status != N''C'') AND (start_date != N'''') AND 
     (start_date >= N''20120516'') AND (comp_date <= N''20120527'') AND 
     (work_order NOT LIKE N''LA%'') 
ORDER BY work_center_id ASC, start_date ASC, starting_shift_num ASC, 
     status ASC, priority ASC, comp_date ASC, ending_shift_num ASC, 
     due_date ASC, sequence_number ASC' 

यह पता चला है कि अगर मैं Op.all फोन मैं इस त्रुटि मिलती है: यदि मैं स्तंभ यूनिकोड वर्ण यह ठीक काम करता है शामिल हो सकता है का उपयोग करता है पर ध्यान न दें

ActiveRecord ArgumentError: negative string size (or size too big)

। बिना किसी समस्या के डेटाबेस में सभी डेटा संग्रहीत किया जा रहा है लेकिन कुछ कारणों से rails3 में यह नहीं है।

कुछ जहां खंड रिकॉर्ड वापस आ जाएगी, जबकि अन्य लोगों में एक ही त्रुटि हो:

activerecord-sqlserver-adapter (3.2.4) lib/active_record/connection_adapters/sqlserver/database_statements.rb:421:in `fetch_all'

यह इन दो पदों के समान है:

ऐसा लगता है कि पहली पोस्ट में समाधान उस मणि को बदलना है जिसे मैं टालना चाहता हूं।

मैंने अपनी मेज पर देखा और मुझे नहीं लगता कि मैं फ़ील्ड नामों के रूप में किसी भी कीवर्ड का उपयोग कर रहा हूं।

मैं इस तरह के अन्य प्रश्नों का उपयोग करता हूं और वे ठीक काम करते हैं। एकमात्र अंतर वह मान है जिसका उपयोग मैं खंड (work_center_id = N''M * 1053 '') में करता हूं।

+0

यह शायद इसलिए है क्योंकि आपके SQL-Server डेटाबेस पर संयोजन और ActiveRecord का उपयोग करने वाले एन्कोडिंग मेल नहीं खाते हैं। देखें [यहां] (http://www.archivum.info/comp.lang.ruby/2009-03/01906/Re-Ruby-1.9-OS-X-command-line-negative-string-size- (ArgumentError) .html) एक समान समस्या के लिए। क्या आप पोस्ट कर सकते हैं वे क्या हैं? – PinnyM

+1

मेरे डेटाबेस का संयोजन SQL_Latin1_General_CP437_CI_AS है और मुझे यकीन नहीं है कि ActiveRecord क्या अपेक्षा करता है। मैं कोशिश करूँगा और इसका शोध करूंगा। मुझे पता है कि मेरे पास एक ही संयोजन के साथ अन्य डेटाबेस हैं जो अच्छी तरह से काम करते हैं। – riddler

+0

रेल यूटीएफ 8 – ctilley79

उत्तर

1

डेटा के साथ मैनिपुलेट के लिए रेल डिफ़ॉल्ट डिफॉल्ट एन्कोडिंग यूटीएफ 8 है, तो आपको इस डेटाबेस को अपने डेटाबेस में भी उपयोग करने की आवश्यकता है। इसे बदलें और सभी को ठीक होना होगा।

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