Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Dlaczego nasze zapytania utknęły w stanie Pisanie do sieci w MySql?

Ponieważ aplikacje nie generują magicznie zapytań tak, jak im się podoba, myślę, że jest to raczej prawdopodobne, że gdzieś w Twojej aplikacji jest błąd, który to powoduje. Oto kilka sugestii, których możesz użyć, aby go wyśledzić. Zgaduję, że używasz PHP, ponieważ używasz MySQL, więc użyję tego w moich przykładach.

Spróbuj dodać komentarze przed wszystkimi zapytaniami w aplikacji, na przykład:

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

Komentarz pojawi się w dzienniku zapytań. Jeśli używasz jakiegoś opakowania API bazy danych, możesz potencjalnie dodać te wiadomości automatycznie:

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

Jeśli nie używasz wrappera, ale wykonujesz zapytania bezpośrednio, możesz użyć rozszerzenia runkit i funkcji runkit_function_rename zmienić nazwę mysql_query (lub inną, której używasz) i przechwycić zapytania.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak używać wyrażenia regularnego na wynikach podzapytania?

  2. Czy MySQL external_key_checks wpływa na całą bazę danych?

  3. Jak zainicjować bazę danych MySQL ze schematem w kontenerze Docker?

  4. Znajdź zduplikowane ciągi w bazie danych

  5. Chcesz numer wiersza w grupie kolumny w MY SQL?