2009-12-28 3 views
0

일반 로그를 활성화하여 모든 mysql 쿼리를 기록 할 수 있습니다. 그러나 실패한 쿼리는 표시되지 않습니다.실패한 쿼리를 로깅합니다.

실패한 쿼리를 저장할 수있는 방법이 있습니까?

답변

0

그것은 쇼가 쿼리를 실패 않습니다. 쉽게 구분할 수있는 방법이 없습니다.

+0

나는 일반 로그가 실제로 기록되는 것을보고 놀랍습니다. 모두! 실패한 쿼리조차도 저속 및 2 진 로그에는 이러한 조회가 없습니다. 옳은? – shantanuo

+0

느린 쿼리 로그는 올바르게 실행되는지에 관계없이 느린 쿼리 만 표시합니다. 이진 로그는 실패하지 않은 모든 쿼리를 표시합니다. 그럼에도 불구하고, 바이너리 로그는 내부적으로 만 사용됩니다 (maily는 db를 재 구축하기 위해 정전이 있어야합니다) – mhughes

0

당신은

을 (당신이 슈퍼 privilegies을 가져야한다) 0sql_log_off 변수를 설정하여 모든 쿼리를 기록하거나 PHP에 의해 실패한 쿼리를 기록 할 수 있습니다 :

function sql_query($data) 
    { 
     $sql = mysql_query($data); 
     if($sql == FALSE){ 
      //do some logging here. 
      $fh = fopen("log.txt", 'a') or die("can't open file"); 
      fwrite($fh, "\n MYSQL ERROR @".microtime(true).": QUERY:".$data."\n"); 
     } 
     return $sql; 
    } 
+1

항상 파일 포인터를 닫는 것을 잊지 말고, 더 깨끗한 방법은 'file_put_contents ('log.txt ', "\ n 오류 메시지", FILE_APPEND)를 사용하는 것입니다. " –

관련 문제