2011-11-24 77 views
0

我正在嘗試在託管平臺上有客戶的網站同步一個mssql數據庫(在客戶辦公室託管)。微軟Sql Server通過php同步MySQL同步

我已經必須成功地同步數據庫的四個表(結構和數據)中的三個。 當我嘗試將包含2個BLOB字段的2300條記錄的第4個表與每個產品的圖像同步時,會出現問題。 我試過的第一件事是

SELECT * FROM chunkyTable

但許多超時被解僱(儘管我設置「mssql.timeout」到7200

所以我成立了其讀取10條記錄分頁同步每個查詢並將它們插入到mysql數據庫中

對於前150條記錄,一切都很順利 從日誌中我可以看出,對於前15頁,同步10條記錄大約需要2到6秒考慮fr在我連接到與普通ADSL連接的mssql服務器的網站上,這個網站構成了一個相當大的瓶頸)。 從第16頁開始,同步10條記錄所需的時間上升到5:30秒。 起初我以爲這是因爲前150條記錄沒有存儲任何圖像,所以我查看了插入到mysql中的內容,發現沒有插入任何東西!

這些讓我認爲,也許mysql對傳遞給mysql_query()函數參數的長度有一些限制。 查詢由該方法是:

INSERT INTO chunckyTable(field1,field2,...fieldN) 
VALUES (val1,val2,val3,...,valN),(val4,val5,val6,...,valM), 

重複10條記錄。

你知道傳遞給mysql_query函數的sql字符串的最大長度是否有一些限制(我看了一下phpinfo()的輸出,但是沒有關於這個主題的任何配置)?

你有類似的經驗嗎? 任何幫助將非常感激!

感謝, 盧克

回答

0

我發現是什麼引發了錯誤。 其實有2件事。

  1. 我在創作查詢這樣$查詢= 「\」 「mysql_real_escape_string($ VAL)。 」\「」 但\」又讓查詢崩潰。
  2. Mysql的@@全球.max_allowed_pa​​cket在我的服務器上設置爲1Mb,但每行都包含2個blob字段,其中有〜150Kb的圖像,因此每行都超過300Kb,因爲還有記錄的數據,當我打包10行插入在一個查詢中,我超出了max_allowed_pa​​cket的限制。爲了解決這個問題,我一個接一個地插入行

謝謝反正你給我的建議!

0

如果你傾倒MSSQL會發生什麼/插入到manualy mysql的一排? 另外 - 你可以嘗試mysqli(注意我的意思是改進的mysql擴展),無論如何它應該比舊的mysql擴展更好。