0

ワードプレスプロジェクトをステージング環境に設定すると、開発環境に設定されたパスに関する問題が発生し、ステージングに適合しません。

したがって、データベース内のパスをからに更新する必要がありC:\xampp\htdocs\site.comます/var/www/site.com

最初は、URLを置き換えたのと同じ方法で、置き換えてみました。

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

4

2 に答える 2

1

バックスラッシュをエスケープする必要があります。\\

于 2013-02-18T11:06:32.453 に答える
1

それは大まかに行く方法です:

mysql> SELECT REPLACE('C:\\xampp\\htdocs\\site.com\\foo\\bar.txt', 'C:\\xampp\\htdocs\\site.com', '/var/www/site.com');
+----------------------------------------------------------------------------------------------------------+
| REPLACE('C:\\xampp\\htdocs\\site.com\\foo\\bar.txt', 'C:\\xampp\\htdocs\\site.com', '/var/www/site.com') |
+----------------------------------------------------------------------------------------------------------+
| /var/www/site.com\foo\bar.txt                                                                            |
+----------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql>

一致がゼロの場合、それは DB レコードにあなたが考えていることが含まれていないためです。ブランクや制御文字が含まれていないことを確認してください。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)

この最後の例では、挿入\時にエスケープするのを忘れており、その結果、入力データが思ったものと異なるため、置換時に一致が得られません。

于 2013-02-18T11:14:02.607 に答える