首页 > 解决方案 > 为什么这个 SQL 查询似乎没有失败,但实际上失败了?

问题描述

我正在向我的 Web 服务器添加一个记录器类,并注意到我的日志没有被插入,尽管查询没有返回失败值。

这是我的数据库处理程序类的查询执行器函数:

//_mysql = MYSQL*
bool DatabaseConnection::query(const std::string &query) const {
    return _mysql && 0 == mysql_real_query(_mysql, query.c_str(), query.length());
}

这是我试图执行的 SQL 查询:

insert into user_logs (id, action, when) value (1, 2, 1615856674);

当 C++ 程序执行此查询时,它返回成功但实际上并未插入该行。因此,我尝试通过客户端手动执行它,但查询失败,告诉我when`.

之后,查询在客户端控制台和 C++ 程序中都按预期工作。

我想知道为什么它在 C++ 程序中没有失败?

标签: c++mysqlmysql-connector

解决方案


“当 C++ 程序执行此查询时,它返回成功但实际上并没有插入行。”

它取决于您的 C++ 程序正在使用的客户端。它可能只是简单地吞下了这个例外,并给你一种它成功而没有成功的印象。要找出原因,您需要深入研究 C++ mysql 客户端的源代码。


推荐阅读