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

クエリがMySqlのWritingtonetの状態でスタックするのはなぜですか?

    アプリケーションは魔法のようにクエリを生成しないので、これを引き起こしているアプリケーションのどこかに間違いがある可能性が高いと思います。これを追跡するために使用できるいくつかの提案があります。 MySQLを使用しているので、PHPを使用していると思いますので、例として使用します。

    次のように、アプリケーションのすべてのクエリの前にコメントを追加してみてください。

    $sqlSelect  = "/* file.php, class::method() */";
    $sqlSelect .= "SELECT * FROM foo ";
    $sqlSelect .= "WHERE criteria";
    

    コメントはクエリログに表示されます。ある種のデータベースAPIラッパーを使用している場合は、次のメッセージを自動的に追加できる可能性があります。

    function query($sql)
    {
        $backtrace = debug_backtrace();
        // The function that executed the query
        $prev = $backtrace[1];
        $newSql = sprintf("/* %s */ ", $prev["function"]);
        $newSql .= $sql;
    
        mysql_query($newSql) or handle_error();
    }
    

    ラッパーを使用せず、クエリを直接実行する場合は、runkit拡張機能と関数 runkit_function_rename mysql_query(または使用しているもの)の名前を変更し、クエリをインターセプトします。



    1. 生成された列をSQLiteのテーブルに追加する

    2. SQLServerで実際の1対1の関係を作成する方法

    3. Python3でMySQLデータベースへの入力をエスケープするにはどうすればよいですか?

    4. PHP / MySQLでAgeを毎日更新できるように、BirthdateとAgeを保存するにはどうすればよいですか?