2012-03-14 96 views
3

我已經建立了自動同步腳本,執行以下操作:自動同步需要更新它

  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時,管理控制面板向我發射一個「You're數據庫已過期,我們現在就升級它「,並且當我瀏覽我同步的網站的正面時,許多perma鏈接在數據庫中失敗。

有沒有任何wordpress guru可以告訴我我可能會做錯什麼?是否有緩存需要更新或清除。 pluggins的

列出已安裝:

  1. 一些自定義的內部有什麼關係呢
  2. Advanted自定義字段插件
  3. 比重由Justin Tadlock
  4. WordPress的搜索引擎窗體
  5. 成員Joost de Valk
  6. WPML多語言CMS
  7. WPML字符串翻譯

我希望有人知道......

祝所有

+0

你可以檢查'version.php'中的'$ wp_db_version'和'options'表中的'db_version'是否相同? – soju 2012-03-14 12:52:05

+0

該死的,他們不是......所以這意味着SVN中的wordpress版本與在線安裝的版本不一樣......它可能就是這麼簡單 – 2012-03-14 12:55:35

+4

另外,一些插件使用PHP序列化來存儲數據,如果該sed命令與任何序列化的內容匹配,則會使該串行數據無效(除非兩個DNS值具有完全相同的長度,否則字符串長度將不匹配)。 – MightyE 2012-03-14 13:15:42

回答

1

WordPress的緩存大量的信息在wp_options表使用Transients API。清除緩存可能會解決一些問題。

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

正如MightyE表示,sed命令將不會在任何序列化的數據,其中有許多插件使用工作。我不確定所有數據庫表的簡單方法。