Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm thế nào để gọi thủ tục lưu trữ MySQL từ Rails?

CHỈNH SỬA:

-

Sử dụng ActiveRecord::Base.connections.exec_query() xa như tôi có thể nói NHIỀU cách tiếp cận tốt hơn chỉ vì nó trả về một mảng băm như người ta mong đợi, ActiveRecord::Base.connections.execute không làm.

Tài liệu

-

Vui lòng đọc bản chỉnh sửa ở trên, tôi để phần bên dưới để tham khảo.

Mặc dù tôi nhận ra câu hỏi này khá cũ và vì các liên kết mà ohho đã đăng có 404'd, nên gần đây tôi đã gặp lỗi tương tự.

Tôi đã có thể sửa nó bằng cách làm như sau:

result = ActiveRecord::Base.connection.execute("call example_proc()") ActiveRecord::Base.clear_active_connections!

Khi bạn đã xóa các kết nối, bạn có thể chạy bất kỳ truy vấn nào khác mà như trước đây, truy vấn không thành công khi cố gắng truy cập cơ sở dữ liệu thông qua đường ray hoặc một proc được lưu trữ khác.

http://apidock.com/rails/v3.2.13 / ActiveRecord / Base / clear_active_connections% 21 / class

--EDIT:

Cũng cần nhắc lại rằng người ta không nên lưu trữ kết nối ActiveRecord trong một biến theo bài đăng của người cho thuê trên liên kết

"Đừng lưu vào bộ nhớ cache!

Không lưu trữ kết nối trong một biến vì một chuỗi khác có thể cố gắng sử dụng nó khi nó đã được đăng nhập lại vào nhóm kết nối. Xem: 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) 



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. nhiều truy vấn cùng một bảng nhưng ở các cột khác nhau mysql

  2. Cách khởi động máy chủ MySQL trên Windows XP

  3. Lặp lại n lần mà không cần sử dụng một thủ tục được lưu trữ

  4. Xuất MySQL vào outfile:Các ký tự thoát CSV

  5. Cách tốt nhất để liên kết các giá trị thập phân / kép / float với PDO trong PHP là gì?