【问题标题】:Why affected rows return 0 while update/delete success?为什么更新/删除成功时受影响的行返回 0?
【发布时间】:2017-05-06 09:30:00
【问题描述】:

我有陈述:

INSERT INTO infotbl(name, phone) VALUES('Alex', '9999999');

并更新它:

UPDATE infotbl SET name = 'Alex Johnes', phone = '999 34356063' WHERE id = 1;

然后删除:

DELETE FROM infotbl WHERE id = 1;

我已成功插入,当我更新和删除行时,MySQL 中已更改。但我在 Node 中的代码返回受影响的行 = 0。为什么? Node中有我的更新和删除功能:

function deleteCustomer (id, callback) {
        db.connection.query("DELETE FROM infotbl WHERE id=?", id, (err, result) => {
            if (err) throw err;
            if (result.affectedRows > 0)
                callback(true);
            else
                callback(false);
        });
    };

及更新功能:

function updateCustomer(id, name, phone, callback) {
    db.connection.query("UPDATE infotbl SET name = ?, phone = ? WHERE id = ?;", [name, phone, id], (err, result) => {
        if (err) throw err;
                if (result.affectedRows > 0)
                    callback(true);
                else
                    callback(false);
});
}

为什么当数据库执行成功时节点返回 0 个受影响的行?

【问题讨论】:

  • 尝试安慰result 对象。可能是您正在使用的数据库驱动程序已更新,它可能会通过某些不同的属性名称返回 affectedRows

标签: mysql node.js express


【解决方案1】:

最可能的解释是没有行满足 UPDATE 和 DELETE 语句中的条件。也就是说,没有id 值等于1 的行。

如果条件匹配一个或多个行,则 UPDATE 可能会影响零行,但应用于行的更改会导致“无更改”...也就是说,正在修改的列已经分配了值。

成功执行但影响零行的 UPDATE 或 DELETE 仍被视为成功。

【讨论】:

    猜你喜欢
    • 2016-01-19
    • 2021-05-06
    • 1970-01-01
    • 2016-09-24
    • 2014-12-08
    • 1970-01-01
    • 2012-03-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多