mysql_field_count()什么时候会为SELECT语句返回0?

时间:2014-08-25 06:30:14

标签: mysql luasql

当我使用luasql查询MySQL数据库时,我遇到了一个奇怪的错误,这似乎是由mysql_field_count()意外地为SELECT语句返回0引起的。

我有两个现有的数据库A,B和以下的lua代码:

local conn = assert(env:connect(db, user, passwd, host))
local cur = assert(conn:execute([[
    SELECT A.field1, B.field2 from A JOIN B on A.id = B.id
]])
local row = cur:fetch({}, "a")

现在代码在最后一行失败,抱怨“尝试索引本地'cur'(数字值)”。文档说execute()如果有结果则返回游标对象,否则返回受命令影响的行数。这在luasql.mysql的{​​{3}}中很明显。我的代码中的断言表明mysql_real_query()mysql_store_result()都成功了。因此,对于我们最终得到一个数字而不是游标对象这一事实的唯一解释是mysql_field_count()返回0.但是它不是SELECT语句吗?它不应该返回2?

请注意,此问题偶尔会发生。但是当它发生时,通常会有几个同一个lua脚本在同一个盒子上运行的实例。我不确定这个事实是否相关。

0 个答案:

没有答案