【发布时间】:2013-12-06 05:31:43
【问题描述】:
我刚刚开始使用 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。
【问题讨论】:
-
您正在更新
user_nicename,您没有在选择或示例数据中显示。该字段在更新之前/之后有什么值? -
只是 NULL。我只运行
'INSERT INTO users SET ?', {user_login: 'newbie'}来创建第二行。 -
是的,但是更新后你没有显示
user_nicename,你的SELECT只选择id和user_login。 -
哇!它在那里。通过将我的 SELECT 更改为 * 它可以工作。我之前确实检查过 mysql 并且 nicename 没有更新;现在运行该选择后,结果显示更改(匹配行:1 更改:1 警告:0')。谢谢!
标签: mysql sql node.js sql-update node-mysql