Vì các ứng dụng không tạo ra các truy vấn theo ý muốn một cách kỳ diệu, tôi nghĩ rằng rất có thể có một lỗi sai ở đâu đó trong ứng dụng của bạn gây ra điều này. Dưới đây là một số gợi ý mà bạn có thể sử dụng để theo dõi nó. Tôi đoán rằng bạn đang sử dụng PHP, vì bạn sử dụng MySQL, vì vậy tôi sẽ sử dụng điều đó cho các ví dụ của mình.
Hãy thử thêm nhận xét vào trước tất cả các truy vấn của bạn trong ứng dụng, như thế này:
$sqlSelect = "/* file.php, class::method() */";
$sqlSelect .= "SELECT * FROM foo ";
$sqlSelect .= "WHERE criteria";
Nhận xét sẽ hiển thị trong nhật ký truy vấn của bạn. Nếu bạn đang sử dụng một trình bao bọc api cơ sở dữ liệu nào đó, bạn có thể tự động thêm các thông báo này:
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();
}
Trong trường hợp bạn không sử dụng trình bao bọc mà thực hiện trực tiếp các truy vấn, bạn có thể sử dụng tiện ích mở rộng runkit và hàm runkit_ Chức năng_rename để đổi tên mysql_query (hoặc bất kỳ thứ gì bạn đang sử dụng) và chặn các truy vấn.