2010-05-28 5 views
0

1 년 전 PDO를 사용하는 데이터베이스 클래스를 만들고 준비, 실행 및 닫기 연결을 모두 처리했습니다. 이 클래스들은 지금까지 잘 작동 해 왔습니다.PDO 데이터베이스 연결 문제

두 개의 서로 다른 데이터베이스 서버가 있는데, MySQL과 MS SQL Express가 있습니다. MySQL 서버에서 직원 ID를 검색하고이를 사용하여 MS SQL 서버에서 직원 정보를 얻습니다. MySQL 서버에서 오는 약 11,000 개의 레코드가 있고 내 프로그램은 다음과 같은 오류로 인해 충돌하기 전에 1200을 통해서만 만듭니다. 이 프로그램처럼 보인다

Connection failed (odbc:Driver=FreeTDS;Servername=MSSQLExpress;Database=SMDINC) Class (PDOException) 
SQLSTATE[08001] SQLDriverConnect: 0 [unixODBC][FreeTDS][SQL Server]Unable to connect to data source 

는 데이터 소스에 연결할 수 없습니다, 그러나 약 30 시간이되기 전에 동일한 쿼리를 실행하고 아무런 문제가되지 않습니다. 또한 쿼리에 들어오는 모든 데이터를 철저히 검사했으며 모두 괜찮아 보입니다.

많은 연결이 만들어 질 수 있다는 것이 문제가 될 수 있지만 여러 다른 장소의 모든 연결을 닫으려고했는데 문제가 해결되지 않는 것 같습니다. 어떤 디버깅 도움이나 제안을 주시면 감사하겠습니다!

크레이그 Metrolis

업데이트]

좋아, 내가 쿼리를 준비 후 closeCursor를 사용하고, 실행하기 전에 한 문제를 발견했다. closeCursor를 꺼내서이 문제를 해결 한 것 같습니다 ....하지만 왜? 즉, 다른 SQL 문을 발행 할 수 있도록

답변

0

PDOStatement :: closeCursor()이 서버에 연결을 해제 ..... 나에게 을 말이 아니라에서 문을 나뭇잎하지 않습니다 다시 실행될 수있게하는 상태 .

즉, 연결이 끊어졌습니다.

그래도 문제가 발생하기 전에 1200 레코드를 통과 한 이유는 아직 설명하지 않았습니다.

+0

답장을 보내 주셔서 감사합니다. 예. 문제없이 다른 모든 프로그램에서 이러한 쿼리를 거의 정확하게 사용하고 있다는 사실은 매우 이상합니다. closeCursor가 현재 객체의 sth 만 닫을 때마다 새 객체를 만들 때마다 그걸 알았습니다. 내가 그냥 버려야한다고 생각하니? 아니면 내가 일할 방법을 찾으면 더 낫지? – Metropolis

+0

@Metropolis : 답장하지 못해 죄송합니다. PDOStatement가 메모리에서 소멸되면 커서가 자동으로 닫히므로 무시해도됩니다. – Powerlord

+0

답장을 보내 주셔서 감사합니다 R :) – Metropolis