mySQL UPDATE查询返回"0行受影响"

18 mysql sql-update

我有这个问题:

UPDATE phonecalls 
   SET Called = "Yes" 
 WHERE PhoneNumber = "999 29-4655"
Run Code Online (Sandbox Code Playgroud)

我的表是phonecalls,我有一个名为的列PhoneNumber.我想要更新的是一个名为Called"是" 的列.

知道我做错了什么吗?当我返回我的查询时,它说0行受影响.

Dan*_*oap 36

正如安非他明和亚达建议的那样SELECT,如果您的电话号码在表格中,请查看a .

但请记住:如果有called问题的行的值已经为"是",则mysql不会更改该值,因此将返回"0行受影响".所以一定要检查当前的值called

  • 连接标志中的FLAG_FOUND_ROWS将使其返回1,即使它设置的值与它已有的值相同. (14认同)
  • @Will评论的更新:从Connector/ODBC 5.2开始,该标志被重命名为FOUND_ROWS,根据https://dev.mysql.com/doc/connector-odbc/en/connector-odbc-configuration-connection -parameters.html (2认同)

Tho*_*ppe 9

我观察到0个受影响的行的另一个原因:错误的数据类型.如果要更新的列是整数或布尔值,并将其设置为字符串,则不会更新 - 但您也不会收到错误.

总结这篇文章中的其他策略/想法:

  1. 检查一个SELECT语句,您的WHERE是否有效并返回结果.
  2. 检查列是否已包含要设置的值.
  3. 检查所需的值是否适合列的数据类型.


Jim*_*aro 6

如果值相同,MySQL 将不会更新该行(不会触发任何警告或错误),因此受影响的行计数将为 0。