MySQL Innodb会话表:更新查询找不到匹配项

时间:2012-02-13 01:46:00

标签: mysql innodb sql-update

我的PHP会话在MySQL数据库上实现,会话表为InnoDB类型。

在同一个PHP脚本的执行过程中,我注意到会话表中添加了一个新行但我无法执行UPDATE语句。 mysql_info()报告有0个匹配的行,所以它从未找到它!但手动检查显示表中存在该行。

如果我在后续的PHP脚本中运行它,那么UPDATE语句就可以了。

它也肯定与InnoDB类型有关,因为一旦切换到MyISAM,它工作正常。我是InnoDB表类型的新手,在处理InnoDB表时我需要知道些什么吗?行级锁定?

[编辑:运行UPDATE语句时,MySQL也没有返回错误]

[编辑,SQL查询示例]

"UPDATE session SET user_id='" . mysql_real_escape_string($user_id) . "' WHERE session_id='" . mysql_real_escape_string(session_id()) . "'";

任何帮助非常感谢! 感谢。

1 个答案:

答案 0 :(得分:0)

这可能是时间问题吗?

举个例子: 获取两个快速连续运行的PHP脚本(例如网站)。 其中一个脚本完成并开始写入会话数据,第二个脚本在会话数据完成写入之前启动,并从DB读取“当前”会话信息。 使用InnoDB,第二个脚本将获得旧的会话数据。

你不喜欢异步系统。