2017-07-29 85 views
0

我試圖用這個基本的代碼非常大量的數據插入到一個MySQL數據庫:MySQL的插入查詢失敗太多的數據

$query = "INSERT INTO PublicNoticesTable (url, county, paperco, date, notice, id) VALUES " . $queryString; 
$result = mysqli_query($connect, $query); 

預先生成的$queryString和包含數以千計的信息行格式爲:

('a', 'b', 'c'),('a', 'b', 'c');

這樣我可以在一個MySQL的通話插入多行數據,並減少處理時間。我有能力限制進入$queryString的信息量,並且當查詢成功時信息量更少。好極了!當我輸入太多信息時,查詢失敗。如果有人能爲我提供解決方案,將不勝感激。如果這很重要,我正在使用GoDaddy和PHPMyAdmin。

謝謝!

+1

查詢失敗時會出現什麼錯誤? – BeetleJuice

+1

請顯示查詢失敗並顯示錯誤消息調試 –

+0

沒有錯誤信息?如果有我不確定如何檢索它。我所知道的是'$ result'返回false – Pixelknight1398

回答

2

如果你想插入使用INSERT ... VALUES模式的值,則有。當我把那麼查詢失敗有點太多信息的max_allowed_packet限制現在爲什麼不調試mysqli_error($connect)

從文檔:

要優化插入速度,請將許多小操作合併爲一個大操作。理想情況下,您建立一個連接,同時發送數據 以獲得許多新行,並延遲所有索引更新和一致性檢查,直到最後。

MySQL客戶端或mysqld服務器收到一個大於max_allowed_packet字節的數據包,它會發出數據包太大的錯誤並關閉連接。

嘗試查看什麼是包

show variables like 'max_allowed_packet'; 

的SQL長度由1M默認限制的最大尺寸,你可以改變 max_allowed_packet參數,以支持更多更大的單個插入。

+0

我將如何去找到這個'max_allowed_pa​​cket'值? – Pixelknight1398

+0

@ Pixelknight1398在這裏看到https://stackoverflow.com/questions/8062496/how-to-change-max-allowed-packet-size?answertab=active#tab-top和https://stackoverflow.com/questions/5688403 /如何對檢查和設置-MAX-允許分組MySQL的變量?answertab =活性#製表頂 –

0

您可以確保列的最大長度足以包含您的數據。如果您的數據非常長(每列大於10,000個字符),您可以嘗試使用blob。