首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更新数据时,SQLite总是返回SQLITE_BUSY

更新数据时,SQLite总是返回SQLITE_BUSY
EN

Stack Overflow用户
提问于 2015-06-26 03:32:21
回答 1查看 510关注 0票数 0

因此,我想从name表中更新字段account。我在这个职能之下行使职能。但是当我测试它的时候,它不是正确的工作。sqlite3_step总是返回SQLITE_BUSY,我做了一个测试,得到了database is locked消息。我该怎么办?

代码语言:javascript
复制
int c_accountdata::name_set(std::string input)
{
if (input.length() > 20)
{
    return -1;
}

sqlite3_bind_text(stmt_name_exist, 1, input.c_str(), -1, NULL);
if (sqlite3_step(stmt_name_exist) == SQLITE_ROW)
{
    sqlite3_reset(stmt_name_exist);
    return 0;
}
sqlite3_reset(stmt_name_exist);


sqlite3_bind_text(stmt_name_update, 0, input.c_str(), -1, NULL);
sqlite3_bind_text(stmt_name_update, 1, input.c_str(), -1, NULL);

int ret = sqlite3_step(stmt_name_update);

sqlite3_reset(stmt_name_update);

sampgdk::logprintf("%d", ret);

return 1;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-26 03:43:42

“数据库锁定”消息通常在其他进程访问它时显示(用于删除或更新操作)。请参见此处的锁定机制详细信息:如果您拥有数据库的管理/根访问权限,则可以使用http://www.sqlite.org/lockingv3.html;如果您正在使用MySQL,则可以尝试

mysql>显示全过程;

这将显示所有当前进程、它们的SQL查询和状态的列表。现在,通常情况下,如果单个查询导致许多其他查询锁定,那么应该很容易识别。受影响的查询将处于锁定状态,而不正常的查询将独自等待,可能会等待一些密集的内容,比如临时表。

如果这并不明显,那么您将不得不使用您的SQL扣减能力来确定哪些违规SQL可能是您的问题的原因。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31064432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档