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

ActiveRecord3デッドロックの再試行

    これを行うためのプラグインがあることすら知りませんでした:)

    使用するものは次のとおりです(ただし、デッドロックが発生しやすいクエリを自分でラップする必要があります):

    # Executes the given block +retries+ times (or forever, if explicitly given nil),
    # catching and retrying SQL Deadlock errors.
    def retry_lock_error(retries = 100, &block)
      begin
        yield
      rescue ActiveRecord::StatementInvalid => e
        if e.message =~ /Deadlock found when trying to get lock/ and (retries.nil? || retries > 0)
          retry_lock_error(retries ? retries - 1 : nil, &block)
        else
          raise e
        end
      end
    end
    


    1. 異なるページ間でmysqli持続的接続を使用する方法

    2. SPARSECOLUMNを使用する理由と時期(SQL SERVER 2008)

    3. MariaDBでのMAKE_SET()のしくみ

    4. データが含まれているときに列タイプを数値からvarchar2に変更するOracleSQL