You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL ON DUPLICATE KEY UPDATE不生效问题排查

问题根源:更新语句等于“原地赋值”

你遇到的问题太典型了——看一下你生成的SQL里的ON DUPLICATE KEY UPDATE部分:

ON DUPLICATE KEY UPDATE active=active,category=category,views=views,...

每一行都是把列的值设置成它自己当前的值,数据库执行这条语句时完全没有任何实际的更新操作,相当于白写了!

为什么会这样?

你原本的意图应该是:当movie_title重复时,用INSERT语句里的新值去覆盖旧行的对应列,但你现在的写法根本没有引用INSERT中的新数据,只是让数据库把列值设成它本身。

正确的写法

你需要用VALUES(列名)来引用INSERT语句中对应列的新值,把更新部分改成这样:

修正后的SQL示例

INSERT INTO movies (movie_title,time_published,language,views,visitor_views,active, type,checked,category,rating,subtitle) 
VALUES ('Bodyguard','2016-12-17 06:54:26','1','2091','15', '1','0','0','Feature Film ','3.66','Bodyguard.vtt') 
ON DUPLICATE KEY UPDATE 
  active=VALUES(active),
  category=VALUES(category),
  views=VALUES(views),
  visitor_views=VALUES(visitor_views),
  checked=VALUES(checked),
  subtitle=VALUES(subtitle),
  rating=VALUES(rating),
  type=VALUES(type),
  language=VALUES(language),
  time_published=VALUES(time_published) -- 别忘了这个列,你之前的更新里漏掉了

对应PHP代码的修改

把wpdb的query语句里的UPDATE部分调整一下:

$wpdb->query($wpdb->prepare(
    "INSERT INTO movies (movie_title,time_published,language,views,visitor_views,active,type,checked,category,rating,subtitle) 
     VALUES(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s) 
     ON DUPLICATE KEY UPDATE 
        active=VALUES(active),
        category=VALUES(category),
        views=VALUES(views),
        visitor_views=VALUES(visitor_views),
        checked=VALUES(checked),
        subtitle=VALUES(subtitle),
        rating=VALUES(rating),
        type=VALUES(type),
        language=VALUES(language),
        time_published=VALUES(time_published)", 
    $movie_title,$time_published,$language,$views,$visitor_views,$active,$type,$checked,$category,$rating,$subtitle
));

额外要确认的点

  • 确保movie_title列确实被设置了唯一约束(主键或者UNIQUE索引),否则ON DUPLICATE KEY UPDATE根本不会触发——数据库只会认为是新行,直接插入而不会执行更新。
  • 检查你是否需要更新time_published列:你之前的更新里没包含它,如果你希望重复时更新发布时间,记得加上(就像上面示例里那样)。

内容的提问来源于stack exchange,提问作者user892134

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:16:28