mysql表间歇性INSERT失败

时间:2011-01-13 01:55:22

标签: php mysql insert

简单的php / mysql INSERT,例如

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 Server)有一些稳定性问题。在此提示之后进一步搜索描述了一些非常类似的情况。目前,我正在重新配置和安装MySQL 5.0.51。希望这有助于制止废话:)

感谢大家的帮助!

3 个答案:

答案 0 :(得分:0)

您是否正在使用与数据库的持久连接?也许问题在于数据库的连接方法,而不是实际的INSERT语句。你检查过你的MYSQL / SYS日志吗?

为了澄清,通常您的MYSQL日志将在/var/log/mysql或相关区域(此示例适用于Linux debian系统,因系统而异)。

这是最不允许你看到 IF 有任何mysql错误,即资源耗尽等;

答案 1 :(得分:0)

您可能需要尝试此操作

将您的字段名称放入查询中:

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

我假设$ name和$ address是变量。从上面的查询中,将字段名称与要插入的值对齐。就像我在这里的方式无法确定,因为你有int(11) and String type mismatch,ticketnum是自动生成的值,相应地改变以满足你的要求......

创建一个存储过程,这将使事情变得简单..

答案 2 :(得分:0)

我找到了。我的第一个提示是here。显然,MySQL 5.1.49与Debian(我使用的是Ubuntu Server)有一些稳定性问题。在此提示之后进一步搜索描述了一些非常类似的情况。目前,我正在重新配置和安装MySQL 5.0.51。希望这有助于制止废话:)

感谢大家的帮助!