問題描述
我有一個安裝在開發環境中的 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。