无法更新node-mysql中的行

时间:2013-12-06 05:31:43

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

我刚开始使用node-mysql,并创建了一个数据库'users'。我可以按照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,我会得到同样的错误。我的配置参数使用我赋予权限的帐户(在testdb上授予所有特权。*''''''''''''''''''''''''''''''

有关如何更新我的更新的任何想法?

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

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

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

1 个答案:

答案 0 :(得分:0)

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

Rows matched: 1  Changed: 1  Warnings: 0