【发布时间】:2011-07-11 04:06:31
【问题描述】:
我有这样的多数据库连接情况:
db connection 1: INSERT xyz
(very short time passes)
db connection 2: SELECT [looking for xyz]
有时SELECT 找到xyz,有时却没有(因为它与INSERT 位于不同的数据库连接上)。如果我在INSERT then the SELECT 后面加上sleep(1) 总是会找到xyz。
对于数据库连接 1,我怎样才能让它等到 INSERT 完成并且新行可用于在另一个数据库连接上运行的 SELECTs?
我的桌子是innodb。用例是在连接 1 上插入经过身份验证的会话 ID,然后重定向到经过身份验证的页面,然后当对经过身份验证的页面的请求进入(在另一个连接上)时,我们会查找会话 ID 来验证请求。如果我们稍微放慢登录速度并让它等到INSERT 完全完成就可以了,这样在返回之前,经过身份验证的会话 ID 可用于其他请求。
【问题讨论】:
-
你可以检查最后一个插入的id
-
您使用什么编码语言?哪个司机?
-
is connection2 连接到同一个数据库服务器或从/副本数据库。
-
@shakti:最后一个插入 ID 是基于每个连接的。连接 2 不会看到连接 1 的最后插入是什么。
-
我正在使用 php。 connection2 在同一个数据库上。每个连接都在为进入我的站点的不同 http 请求提供服务。第一个是登录,第二个是对经过身份验证的页面的请求。谢谢,伙计们!