MySQL查询不返回新插入的记录

时间:2011-03-14 21:00:44

标签: php mysql innodb

我们在新插入的记录上随机看到此行为,并且仅在生产数据库(Amazon的RDS)上看到。看起来像死锁相关的东西......(没有报告错误)

受影响的表是InnoDB,payment_id是自动递增的,所有事务结束时间都是毫秒级。所有连接都在同一台服务器上,启用了自动提交,并且没有复制(就Amazon的文档而言)。

连接#1:

  

2011-03-07 14:09:54 INSERT INTO付款SET payment_transaction ='XYZ'

连接#2:

  

2011-03-07 14:10:06:SELECT * FROM payment WHERE payment_transaction ='XYZ'LIMIT 0,1

回复:空

  

2011-03-07 14:10:06:SELECT * FROM payment ORDER BY payment_id DESC LIMIT 0,1

回复:[payment_id] => 26242,[payment_transaction] => ABC

  

2011-03-07 14:50:06:SELECT * FROM payment WHERE payment_transaction ='XYZ'LIMIT 0,1

回复:[payment_id] => 26243,[payment_transaction] => XYZ

2 个答案:

答案 0 :(得分:0)

它依赖于你正在使用的功能,看看SELECT指令使用 mysql_num_rows()影响了多少行,使用 mysql_affected_rows()和DELETE,根据{{​​3}}更新qnd INSERT指令。

答案 1 :(得分:0)

通过向应用程序添加一些调试点,我注意到这些(随机有问题的)INSERT实际上需要大约50秒才能完成(与日志所说的相反)。因此,对于遇到此问题的任何人,请确保在应用程序环境中对INSERT的开始和结束时间进行基准测试。