Javascript 更新查询不更改MySQL数据库中的数据

Javascript 更新查询不更改MySQL数据库中的数据,javascript,mysql,node.js,express,vue.js,Javascript,Mysql,Node.js,Express,Vue.js,我正在用express.js编写一个应用程序。我正在使用“mysql”附加组件()。我正在发送更新查询。服务器返回给我: {"fieldCount": 0, "affectedRows": 1, "insertId": 0, "serverStatus": 2, "warningCount": 0, "message": "(Rows matched: 1 Changed: 0 Warnings: 0", " protocol41 ": true," changedRows ": 0} 我将

我正在用express.js编写一个应用程序。我正在使用“mysql”附加组件()。我正在发送更新查询。服务器返回给我:

{"fieldCount": 0, "affectedRows": 1, "insertId": 0, "serverStatus": 2, "warningCount": 0, 
"message": "(Rows matched: 1 Changed: 0 Warnings: 0", " protocol41 ": true," changedRows ": 0}
我将查询复制到phpMyAdmin并正确执行它-它会更改数据库中的数据。 我在哪里犯错误

我发送:“更新<代码>测量值<代码>设置<代码>血糖水平<代码>='429',胰岛素剂量<代码>='200',测量小时数<代码>='20',测量日期<代码>='2019-07-29'
WHERE
measurements
ID='14'”查询:插入到、从中删除、选择工作罚款

看起来UPDATE语句找到了一行满足WHERE子句中的条件。例如,如果条件是主键或唯一键列上的相等,则这似乎是合理的

 UPDATE ... WHERE t.id = ?
如果分配给列的所有值都与已经存储的值匹配,那么MySQL将报告行没有更改。这样的查询是合理的

UPDATE mytable SET mycol = mycol
匹配表中的所有行,并更改零行

请注意,为affectedRows返回的值是matchedRows的值

matchedRows的值与changedRows的值不同是合理的

注意:更新前触发器可能会影响NEW.mycl值,因此在这种情况下,更改大量行是合理的

serverStatus值2表示已启用自动提交


一句话:如果我们运行一个查询,来自MySQL服务器的响应就是我们所期望的

 UPDATE mytable SET mycol = mycol WHERE id = ?
如果我们在表中正好找到一行与条件匹配,但在执行赋值后,结果行与语句开头的行相同,即该行没有实际的“更改”


跟进

UPDATE measurements 
   SET sugar_level         = '429'
     , insulin_dose        = '200'
     , hour_of_measurement = '20'
     , date_of_measurement = '2019-07-29'
 WHERE measurements.ID = '14'
假设表中有一行的ID值为14,并且假设表上没有更新前触发器,则会将值分配给列

那么,执行该语句“匹配”一行,“更改”零行是完全合理的。特别是在第二次执行之后。如果我们实际更改其中一个值,比如将sugar_level更改为'430',那么我们将看到一个更改的行


我强烈怀疑MySQL是按照规范运行的(即“正确执行”)


(不清楚OP为什么认为返回的结果不正确,或者认为操作执行不正确。)

问题已解决。我将v-model设置错误,要更改的数据与旧数据相同

您发送的查询是什么?请尝试将不同的update语句写入不同的表。看看是否可以创建一个新表。您可能创建了一个新表。如果是权限问题(即您只能以只读方式访问该数据库),则尝试缩小范围。检查它是否只影响一个表/数据库/etcw我们只是猜测。一种可能性是,代码(没有提供,所以我们不知道,我们只是猜测,这不是调试程序的有效方法)可能SQL语句被执行了两次。第一次,它在改变,第二次,没有改变。也许我们在这里看到的只是第二次执行的结果。再一次,没有看到一些实际的代码,一个我们可以复制的实际测试,我们只是把粪便扔到墙上,看看有什么粘住了@wachcio:不要将与问题相关的代码发布为对答案的评论。问题上有一个编辑按钮。据推测,此处作为注释发布的链接是显示问题中描述的行为的代码。这个信息属于问题。不要在StackOverflow问题读者可能无法阅读的评论中隐藏此信息。