संपादित करें:
--
ActiveRecord::Base.connections.exec_query()
. का उपयोग करना जहाँ तक मैं बता सकता हूँ बहुत बेहतर दृष्टिकोण सिर्फ इसलिए कि यह हैश की एक सरणी देता है जैसा कि कोई उम्मीद करेगा, जो ActiveRecord::Base.connections.execute
नहीं करता।
--
कृपया ऊपर दिया गया संपादन पढ़ें, मैं संदर्भ के लिए नीचे छोड़ रहा हूं।
जबकि मुझे एहसास है कि यह प्रश्न काफी पुराना है और क्योंकि ओहो पोस्ट किए गए लिंक 404'd हैं, मुझे हाल ही में यही त्रुटि हुई थी।
मैं निम्न कार्य करके इसे ठीक करने में सक्षम था:
result = ActiveRecord::Base.connection.execute("call example_proc()")
ActiveRecord::Base.clear_active_connections!
एक बार जब आप कनेक्शन साफ़ कर लेते हैं, तो आप किसी भी अन्य प्रश्न को चला सकते हैं, जहां पहले की तरह यह रेल या किसी अन्य संग्रहीत खरीद के माध्यम से डेटाबेस तक पहुंचने का प्रयास करने में विफल रहा होगा।
http://apidock.com/rails/v3.2.13 /ActiveRecord/Base/clear_active_connections%21/class
--संपादित करें:
यह भी उल्लेखनीय है कि किसी को इस लिंक
"इसे कैश न करें!
किसी कनेक्शन को किसी वेरिएबल में स्टोर न करें, क्योंकि कनेक्शन पूल में पहले से ही चेक इन होने पर कोई अन्य थ्रेड इसका उपयोग करने का प्रयास कर सकता है। देखें:ConnectionPool "
connection = ActiveRecord::Base.connection #WRONG
threads = (1..100).map do
Thread.new do
begin
10.times do
connection.execute("SELECT SLEEP(1)") # WRONG
ActiveRecord::Base.connection.execute("SELECT SLEEP(1)") # CORRECT
end
puts "success"
rescue => e
puts e.message
end
end
end
threads.each(&:join)