结果集中的MySQL搜索和替换(更改WordPress表前缀后)
WordPress正在保存大量关于用户和设置的信息,包括表名。如果您必须更改WordPress表前缀(例如,如果两个WordPress安装使用同一个数据库,则可能需要更改前缀),这是非常烦人的 您必须更新结果集中的MySQL搜索和替换(更改WordPress表前缀后),mysql,sql,wordpress,replace,wildcard,Mysql,Sql,Wordpress,Replace,Wildcard,WordPress正在保存大量关于用户和设置的信息,包括表名。如果您必须更改WordPress表前缀(例如,如果两个WordPress安装使用同一个数据库,则可能需要更改前缀),这是非常烦人的 您必须更新wp\u options表中的许多键,这些键的收集方式如下: SELECT * FROM `myprefix_options` WHERE `option_name` LIKE '%wp_%' SELECT * FROM `myprefix_usermeta` WHERE `meta_key`
wp\u options
表中的许多键,这些键的收集方式如下:
SELECT * FROM `myprefix_options` WHERE `option_name` LIKE '%wp_%'
SELECT * FROM `myprefix_usermeta` WHERE `meta_key` LIKE '%wp_%'
您还必须更新wp\u usermeta
表中的许多键,这些键的收集方式如下:
SELECT * FROM `myprefix_options` WHERE `option_name` LIKE '%wp_%'
SELECT * FROM `myprefix_usermeta` WHERE `meta_key` LIKE '%wp_%'
因此,这里提供的查询将提供给定的结果。现在,我正在搜索以下高级查询:
对于(选择查询的结果集)中的每个结果,用新的前缀元键替换元键的值。
例如:
[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的输入,我们假设如下
按照solarflare的建议使用Mysql替换。它是区分大小写的(我刚刚在我的测试多站点上进行了双重检查)。因此,sql应该是: Usermeta:
UPDATE newprefix_usermeta SET meta_key=REPLACE(meta_key,'oldprefix','newprefix') WHERE meta_key like 'oldprefix%';
选项:
UPDATE newprefix_options SET option_name=REPLACE(option_name,'oldprefix','newprefix') WHERE option_name like 'oldprefix%' ;
它是前缀(如您的示例中所示)(因此旧字符串总是以该子字符串开头)还是出现在字符串中的任何位置(如
%wp\uwp%
将搜索的)和/或它是第一次出现,但出现在字符串中的任何位置?或者用一些例子来说:blackam\u WP\u WP\u blackam
和WP\u blackam
将被什么替换?(大写是有意使用的)好的,我应该澄清一下:假设我们的表不使用大写名称,因此区分大小写。我们还假设前缀可以出现在名称字符串中的任何位置,并使用所有前缀。我会更新这个问题。好吧,在这种情况下,请看一看例如和/或的MySQL文档(除非我错过了关于您情况的一些特殊信息)。您真的必须生活在一个数据库中吗?跨数据库引用表是可能的。事实就是这样。我不知道,谢谢。