2010-05-28 118 views
0

大約一年前,我創建了自己的使用PDO的數據庫類,並處理所有準備,執行和關閉連接。到目前爲止,這些課程一直在努力。PDO數據庫連接問題

我有兩種不同的數據庫服務器,MySQL和MS SQL Express。我從MySQL服務器中檢索一個員工ID,並使用它從MS SQL服務器獲取員工信息。大約有11k條記錄來自MySQL服務器,我的程序只是在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,它似乎已經解決了這個問題....但是爲什麼?這沒有任何意義,我.....

回答

0

PDOStatement對象:: closeCursor()釋放到服務器 的連接,以便 其他SQL語句可能發佈, 但留下的聲明中狀態 ,使其能夠再次執行。

換句話說,它正在關閉你的連接。

儘管如此,仍然無法解釋爲什麼它在問題發生之前通過了1200條記錄。

+0

感謝您的回覆R.是的,我也一直在使用這些查詢幾乎完全像這些在我所有其他程序沒有問題的查詢。我還認爲,如果每次closeCursor只關閉當前對象中的某物,我都會創建新對象。你認爲我應該放棄它嗎?或者,如果我找到一種方法來處理它,它會更好嗎? – Metropolis 2010-05-28 19:54:23

+0

@大都會:很抱歉沒有及時回覆。當PDOStatement內存不足時,光標應自動關閉,所以您應該確保將其關閉。 – Powerlord 2010-06-28 17:02:10

+0

很感謝回覆R :) – Metropolis 2010-06-28 18:30:39