【问题标题】:Auto sync of a wordpress database requires updating itwordpress 数据库的自动同步需要更新它
【发布时间】:2012-03-14 12:28:42
【问题描述】:

我已经构建了一个自动同步脚本,它执行以下操作:

  1. 清理当前位置
  2. 复制动态文件,例如上传文件
  3. 从目标备份数据库,进行一些替换并恢复它

真正的脚本如下:

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 大师可以告诉我我可能做错了什么?是否有缓存可以更新或清除。

已安装插件列表:

  1. 一些与之无关的自定义内部插件
  2. 高级自定义字段
  3. 重力形式
  4. Justin Tadlock 的成员
  5. Joost de Valk 的 WordPress SEO
  6. WPML 多语言内容管理系统
  7. WPML 字符串翻译

希望有人知道...

祝大家好运

【问题讨论】:

  • 您能检查version.php 中的$wp_db_versionoptions 表中的db_version 是否相同?
  • 该死的,他们不是……所以这意味着SVN中的wordpress版本与在线安装的版本不同……可能就这么简单
  • 另外,一些插件使用 PHP 序列化来存储数据,如果该 sed 命令匹配任何序列化内容,它将使该序列数据无效(字符串长度将不匹配,除非两个 DNS值的长度完全相同)。

标签: php mysql wordpress synchronization


【解决方案1】:

WordPress 使用Transients API 将大量信息缓存在wp_options 表中。清除缓存可能会解决一些问题。

DELETE FROM 'wp_options' WHERE 'option_name' LIKE '_transient_%'

正如 MightyE 所说,sed 命令不适用于许多插件使用的任何序列化数据。对于所有数据库表,我不确定是否有一种简单的方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-05
    • 1970-01-01
    • 1970-01-01
    • 2011-10-08
    • 2013-05-25
    相关资源
    最近更新 更多