2013-02-18 65 views
0

將wordpress項目設置到其臨時環境中,我遇到了有關爲開發環境設置的路徑的問題,並且不適合在臨時環境中使用這些路徑。MySQL選擇類似路徑的地方

所以我需要更新數據庫的路徑,從C:\xampp\htdocs\site.com/var/www/site.com

起初,我嘗試更換,以同樣的方式我更換了網址:

update `wp_slider` set `url` = replace(`url`, 'http://local.', 'http://'); 

然後路徑:

update `wp_slider` set `path` = replace(`path`, 'C:\xampp\htdocs\site.com', '/var/www/site.com'); 

哪個實際上沒有工作。然後我嘗試了SELECT看我可以檢索哪些行:

SELECT * FROM `wp_slider` WHERE `path` LIKE "%C:\xampp\htdocs\site.com%" 

它會返回一個空的結果。我錯過了什麼?

忘了提,我試圖做\\逃離\,我仍然沒有得到結果

的什麼,我試圖取代會像一個完整的路徑:C:\xampp\htdocs\site.com/wp-content/plugins/slider/skins/slider\circle\circle.css

+0

只傳遞'xampp'到'其中路徑像'%xampp%''',並檢查你的第二個'update'發生了什麼 – 2013-02-18 11:08:54

+0

我需要更換洞舊路徑,你剛纔提到的,只會替換'xampp '...至少這就是我認爲會的 – Alex 2013-02-18 11:13:57

回答

1

這是大致的路要走:

​​

如果您得到零匹配,這是因爲您的數據庫記錄不包含您認爲他們做的事。確保你沒有空白或控制字符。如果你的MySQL客戶端並不能使它容易發現這樣的事情,你可以隨時使用HEX()

SELECT path, HEX(path) 
FROM wp_slider 
WHERE path NOT LIKE "C:\\xampp\\htdocs\\site.com%" 

另外,我不完全相信你可以使用\在Unix系統路徑分隔符。我建議你更換它,以及:

UPDATE wp_slider 
SET path = replace(path, '\\', '/') 
WHERE path IS NOT NULL 

更新:

我想要說明的是,你的程序基本上是正確(不同的是逃避\並不總是可選):

mysql> CREATE TABLE wp_slider(
    -> path VARCHAR(2083) 
    ->); 
Query OK, 0 rows affected (0.06 sec) 

mysql> INSERT INTO wp_slider (path) VALUES ('C:\\xampp\\htdocs\\site.com/wp-content/plugins/slider/skins/slider\\circle\\circle.cs 
s'); 
Query OK, 1 row affected (0.04 sec) 

mysql> UPDATE wp_slider SET path=REPLACE(path, 'C:\\xampp\\htdocs\\site.com', '/var/www/site.com'); 
Query OK, 1 row affected (0.03 sec) 
Rows matched: 1 Changed: 1 Warnings: 0 

mysql> SELECT * FROM wp_slider; 
+----------------------------------------------------------------------------+ 
| path                  | 
+----------------------------------------------------------------------------+ 
| /var/www/site.com/wp-content/plugins/slider/skins/slider\circle\circle.css | 
+----------------------------------------------------------------------------+ 
1 row in set (0.00 sec) 

如果您沒有得到匹配,這是因爲您的數據庫包含的數據與您想象的數據不同,例如(但不限於)空白字符或控制字符:

mysql> TRUNCATE TABLE wp_slider; 
Query OK, 0 rows affected (0.03 sec) 

mysql> INSERT INTO wp_slider (path) VALUES ('C:\xampp\htdocs\site.com/wp-content/plugins/slider/skins/slider\circle\circle.css'); 
Query OK, 1 row affected (0.02 sec) 

mysql> UPDATE wp_slider SET path=REPLACE(path, 'C:\\xampp\\htdocs\\site.com', '/var/www/site.com'); 
Query OK, 0 rows affected (0.00 sec) 
Rows matched: 1 Changed: 0 Warnings: 0 

mysql> SELECT * FROM wp_slider; 
+------------------------------------------------------------------------------+ 
| path                   | 
+------------------------------------------------------------------------------+ 
| C:xampphtdocssite.com/wp-content/plugins/slider/skins/slidercirclecircle.css | 
+------------------------------------------------------------------------------+ 
1 row in set (0.00 sec) 

在最後這個例子中,我們忘記了逃跑\插入,因此更換,因爲輸入的數據是不是我們想象的是,當我們沒有得到匹配。

+0

它只是顯示你還沒有明白它:( – 2013-02-18 11:21:32

+0

我改變了''\\''''/''然後更新路徑,一切都很順利。 – Alex 2013-02-18 11:31:22

1

您需要逃避反斜槓:\\

+0

試過了......仍然相同的結果 – Alex 2013-02-18 11:06:54