mysql - 更新 Node mysql 中的行时出现问题

标签 mysql sql node.js sql-update node-mysql

我刚刚开始使用node-mysql,并创建了一个数据库“用户”。我可以按照repository中的说明进行选择和创建。 。数据库当前有值

[ { id: 1, user_login: 'mwilson' },
  { id: 2, user_login: 'newbie' } ]

和字段[id、user_login、user_nicename]。

但是,当我运行更新函数来更新第二个用户时,结果显示有 1 行匹配,但 0 行发生更改,并且 SELECT 确认没有更新。

我的代码:

connection.query('UPDATE users SET user_nicename = ? WHERE user_login = ?', ['New User','newbie'],
 function(err, results) {
  if(err) {
    console.log("Failed on query",err);
  } else {
  console.log(results);

结果:

{ fieldCount: 0,
  affectedRows: 1,
  insertId: 0,
  serverStatus: 34,
  warningCount: 0,
  message: '(Rows matched: 1  Changed: 0  Warnings: 0',
  protocol41: true,
  changedRows: 0 }

在connection.query('SELECT id, user_login FROM users')之后:

[ { id: 1, user_login: 'mwilson' },
  { id: 2, user_login: 'newbie' } ]

我能找到的最接近我的其他问题是 Node.js mysql query syntax issues UPDATE WHERE 。我的代码遵循第一个答案给出的格式;其他尝试给出了查询错误。我还看到某人在尝试增加 NULL 字段时得到此结果的帖子。

如果我使用 WHERE id = 2 我会得到同样的错误。我的配置参数使用我已授予权限的帐户 (GRANT ALL PRIVILEGES ON testdb.* TO 'dev'@'%' IDENTIFIED BY 'dev';)

关于如何更新我的更新有什么想法吗?

编辑:为了形成我运行的数据库:

CREATE TABLE users( 
   id int auto_increment primary key, 
   user_login varchar(25), 
   user_nicename varchar(75) 
);

因此默认情况下,除了 id 之外的用户字段均为 NULL。

最佳答案

在评论之后,我在更新之前运行了 SELECT *,而不仅仅是 SELECT id, user_login。这很有趣,因为我的选择和更新脚本位于不同的脚本中(因此连接也不同)。我本以为我刚刚错过了更新(当然!),但是当我再次运行 UPDATE 且没有任何更改时,我的结果是

Rows matched: 1  Changed: 1  Warnings: 0

关于mysql - 更新 Node mysql 中的行时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20416701/

相关文章:

sql - 简单的 MySQL 问题 - MAX(field)?

PHP、SQL - 复杂的查询需要 40 多秒

sql - 如何使用 Postgresql 对表的所有列值求和并在新行中显示总计

node.js - Electron ipcMain Listener 在类中定义

node.js - 什么时候调用序列化和反序列化 Passport 方法?它究竟设置了什么?

mysql - 将 php 变量作为字符串传递给 mysql 作为 SELECT 的一部分

MySQL当同一个表中有1个或多个相同信息时如何选择/列出数据名称?

javascript - 如何使 EXPECT 条件等待 promise 得到解决(代码包装在方法中)?

mysql - 我的 SQL 查询顺序使得列中的相同值不会聚集在一起

sql - 选择具有满足某些约束的多个子关系的所有行