根据 these excellent instructions,我可以从多站点安装中导出 wordpress 子站点的表。但是,我无法根据说明更新数据库的 table_prefix。谁能看到我做错了什么?或者提供另一个“整洁的”终端“one-liner”来更新 db table_prefix (参见下面的“#6”)?
突触:
地点:
mainsite = domain.localhost.mainsite.com
子站点 = domain.com
#0 sudo su
#1 Create space for db export & conversion
mkdir /tmp/domain.localhost.mainsite.com/
mkdir /tmp/domain.localhost.mainsite.com/domain.com
#2 change to wp root directory
$ cd /var/www/html/domain.localhost.mainsite.com/
#3 Locate blog_id of relevant site (NEVER # 1, this is main site)
wp site list
#4 Export all the subsite db tables to new " .sql " file
wp db export --tables=$(wp db tables --url=domain.localhost.mainsite.com --format=csv --skip-plugins --skip-themes --allow-root) /tmp/domain.sql --allow-root
#5 Identify current db prefix
grep "table_prefix" wp-config.php
output: $table_prefix = 'wpb_';
#6 Change the table prefix to match new location db prefix (" 2nodeh_ ")
sed "s#wpb_<blog_id#>_:#2nodeh_#g" /tmp/domain.sql > /tmp/domain.localhost.mainsite.com/domain.com/domain.sql #This does not seem to work
#7 make " .sql " even smaller, using gzip
gzip /tmp/domain.localhost.mainsite.com/domain.com/domain.sql -c > /tmp/domain.localhost.mainsite.com/domain.com/domain.sql.gz
#8 (move db to safer storage space) upload db to new location and import
(php my admin fastest way)
#9 rsync plugins, themes, & uploads to new location
/wprootdirectory/wp-content/plugins/
/wprootdirectory/wp-content/themes/
/wprootdirectory/wp-content/uploads/sites/<blog_id#>/
每当我将数据库导入新数据库时,原始 table_prefix 仍然存在。我知道如何使用 mysql 更改表前缀。我特别在寻找类似于上面 #6 的单个终端命令......有什么提示吗?
答案 0 :(得分:0)
您可以使用 wp-cli 重命名包,这对我有用。
https://github.com/iandunn/wp-cli-rename-db-prefix
注意:请记住在运行命令之前备份您现有的数据库。
谢谢
答案 1 :(得分:0)
找到答案,显然我问题第 6 项中的语法不正确,要使用 sed
更改 wordpress 表前缀,请使用以下格式:
sed --in-place --expression 's#`wp_<blog_id#>_#`<new_prefix>_#g' exported-db.sql
注意事项:
1.) 以上专门用于从问题中描述的多站点导出子站点,但也可用于其他场景
2.) 虽然很容易,但如果您要从“domain.localhost.mainsite.com”移动到“domain.com”,请不要使用此方法来替换 url,因为 wordpress 在某些情况下会序列化 db 中的 url,而是通过 phpmyadmin sql quesy 界面使用下面方便的 sql 查询,进行适当的 url 更改:
UPDATE wp_options SET option_value = replace(option_value, 'oldurl.com', 'newurl.com') WHERE option_name = 'home' OR option_name = 'siteurl';UPDATE wp_posts SET guid = replace(guid, 'oldurl.com','newurl.com');UPDATE wp_posts SET post_content = replace(post_content, 'oldurl.com', 'newurl.com');
UPDATE wp_postmeta SET meta_value = replace(meta_value,'oldurl.com','newurl.com');
3.) 像往常一样......在你做任何这些之前备份你的数据库