sql >> データベース >  >> RDS >> Mysql

RailsからMySQLストアドプロシージャを呼び出す方法は?

    編集:

    -

    ActiveRecord::Base.connections.exec_query()を使用する 私がたくさんを言うことができる限りです ActiveRecord::Base.connections.executeが期待するようにハッシュの配列を返すという理由だけで、より良いアプローチです。 ではない。

    ドキュメント

    -

    上記の編集をお読みください。参考のために以下を残しておきます。

    この質問はかなり古いものであり、ohhoが投稿したリンクは404であるため、最近同じエラーが発生しました。

    次のようにして修正することができました:

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

    接続をクリアすると、Railsまたは別のストアドプロシージャを介してデータベースにアクセスしようとして失敗した場合と同様に、他のクエリを実行できます。

    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) 
    



    1. LIMITを使用してMySQLテーブルから平均を選択します

    2. AlteryxでのJavaデータの操作

    3. Prometheusを使用してMySQLコンテナを監視する方法-スタンドアロンおよびSwarmでのデプロイ::パート1

    4. MariaDBバックアップへの移行