sql >> Database teknologi >  >> RDS >> Mysql

Hvorfor sætter vores forespørgsler fast på staten Writing to net i MySql?

Da applikationer ikke på magisk vis genererer forespørgsler, som de vil, tror jeg, at det er ret sandsynligt, at der er en fejl et eller andet sted i din applikation, der forårsager dette. Her er et par forslag, som du kan bruge til at spore det. Jeg gætter på, at du bruger PHP, da du bruger MySQL, så jeg vil bruge det til mine eksempler.

Prøv at tilføje kommentarer foran alle dine forespørgsler i applikationen, sådan her:

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

Kommentaren vises i din forespørgselslog. Hvis du bruger en slags database-api-indpakning, kan du potentielt tilføje disse meddelelser automatisk:

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();
}

Hvis du ikke bruger en wrapper, men i stedet udfører forespørgslerne direkte, kan du bruge runkit-udvidelsen og funktionen runkit_function_rename for at omdøbe mysql_query (eller hvad du nu bruger) og opsnappe forespørgslerne.



  1. Vælg ved hjælp af dynamisk genereret tabelnavn

  2. Hvorfor returnerer MySQL nogle flydere i videnskabelig notation, men ikke andre?

  3. Sum datediff i minutter med MySQL

  4. CakePHP 3 defaultConnectionName i plugin-modellen virker ikke