2011-01-13 47 views
1

簡單PHP/MySQL的INSERT如間歇INSERT未能MySQL表

mysql_query("INSERT INTO dispatch VALUES('1234','$name','$address')");

間歇性失敗。我已經將它設置爲在發生時進行陷阱並將用戶放回帶有重新填充數據的表單,以便他們可以再次嘗試,但是一旦失敗,它將永遠不會插入。我嘗試重新建立連接,創建新的連接,我在這裏完全失敗。任何人有任何想法?

更新結果的

DESCRIBE dispatch

ticketnum int(11) NO PRI auto_increment 
callername tinyblob NO 
callerphone tinyblob YES 
request longblob YES 
clientname tinyblob NO 
callcounty varchar(30) YES 
clientphone tinyblob YES 
dispatcher varchar(30) NO 
dispatched varchar(3) NO 
rectime datetime NO 
dispatchtime datetime YES 
timetodispatch time YES 
worker varchar(30) YES 
restime datetime NO 
timetores time NO 
resolution varchar(120) NO 
notes longblob YES 
recordnum varchar(15) YES 
dob date YES 

編輯補充:

我發現了它。我的第一個暗示是here。顯然,MySQL 5.1.49與Debian(我正在使用Ubuntu服務器)有一些穩定性問題。在提示後進一步搜索描述了一些非常相似的情況。目前,我正在重新配置和安裝MySQL 5.0.51。希望這將有助於杜絕廢話:)

感謝大家的幫助!

+0

也許你違反了獨特的約束? – 2011-01-13 02:06:40

+0

不知道如何,我沒有得到任何錯誤,除了mysql_affected_rows()保證我沒有插入。 – Elq 2011-01-13 02:09:09

+0

你能告訴我們'DESCRIBE dispatch`的輸出嗎? – 2011-01-13 02:11:57

回答

0

我找到了。我的第一個暗示是here。顯然,MySQL 5.1.49與Debian(我正在使用Ubuntu服務器)有一些穩定性問題。在提示後進一步搜索描述了一些非常相似的情況。目前,我正在重新配置和安裝MySQL 5.0.51。希望這將有助於杜絕廢話:)

感謝大家的幫助!

0

您是否使用持久連接到數據庫?也許問題在於連接方法到您的數據庫,而不是實際的INSERT聲明。你有沒有檢查你的MYSQL/SYS日誌?爲了澄清,通常你的MYSQL日誌將在/var/log/mysql或相關區域(這個例子是針對一個linux debian系統的,對於你的系統而言會有所不同)。

這是最不讓你看到如果有任何mysql錯誤,即資源耗盡等;

0

您可能需要嘗試這個

把你的字段名進入查詢:

mysql_query("INSERT INTO dispatch(ticketnum,callername,...) VALUES('1234',$name,$address)"); 

我假設$ name和$地址是變量。從上面的查詢中,將字段名稱與要插入的值對齊。喜歡的方式我這裏有不肯定的工作,因爲你有int(11) and String type mismatch,ticketnum是自動生成的值,相應地改變,以適應你的質量要求...

創建一個存儲的存儲過程,這將讓事情容易..