我已经构建了一个执行以下操作的自动同步脚本:
真实的剧本如下:
echo Updating via SVN
export LC_ALL=fr_CA.UTF-8
svn up
echo Cleaning up the image and temp folder
rm -Rf wp-content/uploads/*
echo Copying files from production version
cp -R ../public_html/wp-content/uploads/* wp-content/uploads/
echo Importing wordpress database
mysqldump -u xxxyyyzzz --password=xxxyyyzzz xxxyyyzzz_db --skip-opt --add-drop-table --default-character-set=utf8 > temp.sql
sed 's/www.domain.com/preprod.domain.com/g' temp.sql > temp2.sql
mysql -u xxxyyyzzz --password=xxxyyyzzz xxxyyyzzz_preprod_db < temp2.sql
rm temp.sql
rm temp2.sql
echo Complete
这里的代码工作正常,除了一个小问题。当我在同步两个项目(PROD&gt; PREPROD)后从wordpress加载WP-ADMIN时,我怀疑它在我做PROD时会做同样的事情&gt;阶段和PROD&gt; DEV,管理控制面板向我射击“你的数据库已经过时,我们现在就升级它们”,当我浏览我同步的网站前端时,许多perma链接在数据库中失败。
那里有没有wordpress大师可以告诉我我可能做错了什么?是否存在要更新或清除的缓存。
已安装的插件列表:
我希望有人知道......
祝所有人好运
答案 0 :(得分:1)
WordPress使用Transients API在wp_options
表中缓存大量信息。清除缓存可能会解决一些问题。
DELETE FROM 'wp_options' WHERE 'option_name' LIKE '_transient_%'
正如MightyE所说,sed
命令不适用于许多插件使用的任何序列化数据。我不确定所有数据库表都有一个简单的方法。