【发布时间】:2012-03-14 12:28:42
【问题描述】:
我已经构建了一个自动同步脚本,它执行以下操作:
- 清理当前位置
- 复制动态文件,例如上传文件
- 从目标备份数据库,进行一些替换并恢复它
真正的脚本如下:
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 > PREPROD)后从 wordpress 加载 WP-ADMIN 并且我怀疑当我执行 PROD > STAGE 和 PROD > DEV 时它会做同样的事情,管理控制面板向我射击“你是数据库已过期,我们现在将对其进行升级”,当我浏览我同步的网站的前端时,数据库中的许多永久链接都失败了。
是否有任何 wordpress 大师可以告诉我我可能做错了什么?是否有缓存可以更新或清除。
已安装插件列表:
- 一些与之无关的自定义内部插件
- 高级自定义字段
- 重力形式
- Justin Tadlock 的成员
- Joost de Valk 的 WordPress SEO
- WPML 多语言内容管理系统
- WPML 字符串翻译
希望有人知道...
祝大家好运
【问题讨论】:
-
您能检查
version.php中的$wp_db_version和options表中的db_version是否相同? -
该死的,他们不是……所以这意味着SVN中的wordpress版本与在线安装的版本不同……可能就这么简单
-
另外,一些插件使用 PHP 序列化来存储数据,如果该 sed 命令匹配任何序列化内容,它将使该序列数据无效(字符串长度将不匹配,除非两个 DNS值的长度完全相同)。
标签: php mysql wordpress synchronization