wordpress正在保存大量关于用户和设置的信息,包括表名。如果您必须更改wordpress表的前缀(例如,如果两个wordpress安装使用同一个数据库,这可能是必要的),那么这是非常烦人的。
你必须更新很多钥匙 wp_options
像这样聚集的table:
SELECT * FROM `myprefix_options` WHERE `option_name` LIKE '%wp_%'
您还必须更新 wp_usermeta
像这样聚集的table:
SELECT * FROM `myprefix_usermeta` WHERE `meta_key` LIKE '%wp_%'
因此,这里提供的查询将提供给定的结果。现在我正在搜索以下高级查询:
对于(select查询的结果集)中的每个结果,用新的前缀meta key替换meta key的值。
例子:
[umeta_id][user_id][meta_key][meta_value]
1|1|oldprefix_foo|whatever
2|2|oldprefix_bar|abc
应该变成:
[umeta_id][user_id][meta_key][meta_value]
1|1|newprefix_foo|whatever
2|2|newprefix_bar|abc
如何(在单个)mysql查询中实现这一点?
编辑:根据@solarflare的输入,我们假设如下。
更新查询应区分大小写(不替换大写出现)
替换元密钥中的所有匹配项,这意味着frank\u oldprefix\u foo变为frank\u newprefix\u foo
1条答案
按热度按时间uurity8g1#
按照solarflare的建议使用mysql替换。它是区分大小写的(我刚刚在我的测试站点上进行了双重检查)。所以sql应该是:
用户元:
选项: