我有一个列出所有订单的数据库表。每个周末一个cron运行,并为每个客户生成发票。代码循环遍历每个客户,获取他们最近的订单,创建一个PDF,然后更新订单表以根据每个订单记录发票ID。MySQL更新没有更新所有记录
最后更新查询是:
更新预订组发票=“12345”,其中用户名=“测试 - 用户名”和发票=“”;
因此,为以前未开具发票的测试用户名的所有订单设置发票至12345。
我遇到了订单被添加到PDF但未更新以反映它们已被开票的事实的问题。
我已经开始手动运行更新查询并遇到一个奇怪的场景。
客户可能有60个订单。
如果我运行查询一次,然后1次更新。我再次运行它,并且1次更新,我重复这个过程,每次只有少量订单被更新 - 在1和3之间。它不会像我所期望的那样更新一个查询中的60。我需要反复运行查询,直到它最终返回“受影响的0行”,然后我可以确定所有行都已更新。
我在查询中不包含LIMIT XX,所以我没有理由不能一次更新所有订单。我重复运行的查询每次都是相同的。
有没有人有任何明智的建议?
你可以在这里添加一个'SELECT'查询,检查哪些记录应该受到影响(如'SELECT * FROM bookings WHERE username =:username AND invoiced =''') - 并记录其结果? – raina77ow 2013-03-19 15:50:15
嗨 - 是的,这是奇怪的事情。如果我为完全相同的查询执行SELECT,那么我会看到完整的结果 - 例如60行。如果我然后运行一个更新,那么它只会做1或2. – Chris 2013-03-19 15:52:22
好的,我假设在普通MySQL(例如,通过控制台)完成相同的查询运行正常...您可以显示代码本身吗? – raina77ow 2013-03-19 16:16:30