2014-09-09 4 views
0

이것이 최선의 설정은 아니라는 것을 알고 있습니다 만, 나는 그것을 고수하고 변경할 수 없습니다.PHP를 사용하여 ODBC를 사용하여 MS Access DB에 연결하면 잠금이 계속됩니다.

PHP는 로컬 MS Access DB (.mdb)에 연결하여 스크립트가 수행하는 특정 활동을 기록합니다. 이 스크립트는 하나의 인스턴스 만 실행될 때 제대로 작동합니다.

odbc_exec(): SQL error: [Microsoft][ODBC Microsoft Access Driver] Could not update; currently locked., SQL state S1000 in SQLExecDirect 

이는 그래서는 두 개의 스크립트가 동일한에서 같은 테이블에 쓰기를 시도 할 일 경우에만입니다 있으리라 믿고있어 간헐적으로 발생하는 두 개의 인스턴스를 실행할 경우, 나는 가끔 다음과 같은 오류가 시각. 나는 MySQL과 같은 다른 DB들과 함께이 문제를 결코 가지지 못했다. PHP/ODBC/Access에 잠금을 설정하지 않거나 잠그면 다시 시도 할 수있는 방법은 무엇입니까?

또한 일반적으로 문제 해결을 위해 내 화면에 Access 데이터베이스가 열려 있습니다.

답변

0

odbc_exec() 반환 FALSE 쿼리가 실패, 그래서 당신은 단지 쿼리의 결과를 확인하고 성공할 때까지 계속 시도 할 수 있다면 :

$sql = "UPDATE [Clients] SET [Position]='somewhere' WHERE [ID]=1"; 
while (TRUE) { 
    $result = odbc_exec($conn, $sql); 
    if ($result) { 
     break; 
    } 
    else { 
     $lastError = odbc_error(); 
     if ($lastError != "S1000") { 
      echo "ODBC error $lastError"; 
      break; 
     } 
    } 
    sleep(1); 
} 
관련 문제