为什么 MySql 使用 guid 的查询更新不影响行?

Why MySql query update with guid don't affect rows?

我有一个 MySql 查询更新:

UPDATE wp_posts SET  guid = REPLACE (guid, 'http://oldcomain.com/', 'http://mynewcdndomain.com/') WHERE post_type = 'attachment';

我在 wordpress 域上使用它,在 amazon rds 数据库中,我正在通过 MySQL Workbench 更新它并获得结果:

0row(s) affected Rows matched: 24103 Changed: 0 Warning: 0

如您所见,它找到了我需要的行,但它没有更新,我正在尝试将 wordpress 上的所有 wordpress 媒体更新到我的 cdn amazon s3 url。

更新: 也试过:

UPDATE wp_posts SET post_content = REPLACE (post_content, 'olddocmain.com', 'newcdndomain.com') WHERE post_type = 'attachment';

以太币不起作用。

试试这个:

UPDATE wp_posts 
SET post_content ='newcdndomain.com' 
WHERE post_type = 'attachment' AND
      post_content ='olddocmain.com';

您从 workBench 获得的信息显示它可以找到附件的匹配记录,但是对于 guid 属性,没有行包含 'oldcomain.com/',所以这就是它什么也没改变的原因。

您使用的查询是正确的。我想也许再次验证匹配的字符,例如'oldcomain.com' 而不是 'oldcomain.com/'.

或者您可以尝试使用通配符,例如尝试在匹配字符前后添加 %,'%oldcomain.com%'。

希望对您有所帮助。