mysql - 替换 LONGTEXT MySQL 中的字符串

标签 mysql sql

我正在尝试更新新数据库中的一些图像。我已阅读如何使用此 SQL 查询:

UPDATE blogs SET body = REPLACE(body, 'http://www.OLDSITE.com/wp-content/uploads/', 'https://NEWSITE.nyc3.digitaloceanspaces.com/old-wordpress/');

但这没有任何作用。

我运行此查询只是为了确保它找到了我需要的内容

SELECT REPLACE(body, 'http://www.OLDSITE.com/wp-content/uploads/', 'https://NEWSITE.nyc3.digitaloceanspaces.com/old-wordpress/') from blogs

这返回了我需要的一切。我在UPDATE中遗漏了什么吗?

示例数据:

body 内的 blogs 条目中

<a href="http://www.OLDSITE.com/wp-content/uploads/2014/09/beforeandaftercollage2.jpeg"><img class="alignnone size-medium wp-image-9089" alt="beforeandaftercollage2" src="http://www.OLDSITE.com/wp-content/uploads/2014/09/beforeandaftercollage2-231x300.jpeg" width="231" height="300" /></a>

最佳答案

您可能达到了事务日志的高水位线 - 即所有之前和之后值的数据总量超过了单个事务允许的最大值,特别是因为数据类型 LONGTEXT 建议大量数据。

更新 block 。幸运的是,MySQL 有一个非常方便的功能来做到这一点:

UPDATE blogs SET
body = REPLACE(body, 'http://www.OLDSITE.com/wp-content/uploads/', 'https://NEWSITE.nyc3.digitaloceanspaces.com/old-wordpress/')
WHERE body like '%www.OLDSITE.com%'
LIMIT 1000

技巧是LIMIT 1000,它会在更新 1000 行后停止查询。如果更新仍然会增加日志大小,您可能需要调低数字 1000,或者为了方便起见,调高数字。

您可能不需要 WHERE 子句,但我没有方便的 MySQL 实例来测试它。

关于mysql - 替换 LONGTEXT MySQL 中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49120309/

相关文章:

MySQL - 依赖连接

php - 需要 PHP 和 MySQL 方面的帮助...

MySQL 加载数据文件 (CSV) : replace/remove vertical tabs

sql - 相同的 SELECT 与 DELETE 查询创建不同的查询计划,执行时间差异很大

SQL - 有重复时选择最新的记录

php - 使用 $this->db->select(); 时如何在 codeigniter 中禁用反引号;

php - 永久链接策略(不是 wordpress)

MySQL 查询按日期范围分组

mysql - 在另一列值的末尾添加一个列值

sql - psql如何将函数组转换为列