問題描述
我有一個安裝在開發環境中的 Wordpress 資料庫… 因此,對站點本身的所有引用都具有固定的 IP 地址 (例如 192.168.16.2) 。現在,我必須將該資料庫遷移到主機上的新 Wordpress 安裝。問題是,SQL 轉儲包含很多對 IP 地址的引用,我必須將其替換為:my_domain.com 。
我可以使用 sed 或其他一些命令來改變命令列,問題是有很多使用 JSON 的配置資料。所以呢?那麼,你知道,JSON 陣列使用的東西就像:s:4: 知道一個元素有多少個字元,因此,如果我只是用域名替換 IP,配置檔案將被破壞。
幾年前,我使用 Windows 的應用程式,允許更改資料庫中的值並處理 JSON 陣列。不幸的是,我忘了應用程式的名稱… 所以問題是:你知道任何允許我做我想要的應用程式嗎?
最佳解決方案
您正在檢視的資料不是 JSON 格式的。 JSON 通常不儲存這樣的值型別和長度。你所看到的是 SERIALIZED 資料。谷歌搜尋 「mysql 替換序列化」 產生此頁面,這可能有助於:http://davidcoveney.com/mysql-database-search-replace-with-serialized-php/
次佳解決方案
食典有體面的指導 – Changing Site URL 。
基本上有幾個地方有 URL 重要或沒有這麼多 (我可能會缺少一些):
-
控制 WP 認為網站的位置的
home和siteurl選項; -
釋出 GUID,這些看起來像連結,但真的他們不是唯一的識別符號。我不是絕對確定它們是不相關的,但是我在測試堆疊上改變了 URL,從來沒有打擾過更新這些。
-
郵政機構中的聯絡;
-
可能在外掛設定中連結。
第三種解決方案
正如 Rarst 所說,資料庫中只有兩個設定需要改變。匯入資料庫後,我登入到 PHPMyAdmin 並直接編輯資料庫。
我一直在 PC 上使用開發伺服器來匯入資料來源,它們的 URL 附加到了 http://localhost/testsite/post-name/的帖子中,並沒有造成問題。
我以前使用 SQL 搜尋和替換,直到我意識到沒有關係。我已將一些網站從一個域遷移到另一個域,並且我在內容中使用絕對 URL,我將使用 SQL 搜尋和替換選項。
update wp_posts set post_content = replace(post_content,'http://www.olddomain/','http://www.newdomain/');
大衛
第四種方案
這是一個驚人的資源,我已經加入書籤,我再次回到時間和時間 http://www.onextrapixel.com/2010/01/30/13-useful-wordpress-sql-queries-you-wish-you-knew-earlier/
他們說
UPDATE wp_options SET option_value = replace(option_value, 'http://www.oldsiteurl.com', 'http://www.newsiteurl.com') WHERE option_name = 'home' OR option_name = 'siteurl';
第五種方案
您可以使用 wp-config.php 中的常量設定這些值。之後,您可以透過外掛管理員更改資料庫中的條目。將其寫入 wp-config.php,DB 中的值不相關:
define('WP_HOME', 'http://example.com/to-wordpress');
define('WP_SITEURL', 'http://example.com/to-blog');
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。