WordPressのデータベースを直接書き換えて画像のリンク切れを解消した話
事の発端
最近サイトを移行したのですが、このように突如画像のリンクが切れる事案が発生。
原因を探ると、ダッシュボードのメディア>ライブラリ>リンクが切れてる画像を選択、すると画像のURLが以下のように古い設定になっていた。
この時は家のサーバでWPを動かしていたので完全にローカルIP。。。(しかもURLが書き換えられないように灰色になっている)
設定>一般設定>WordPressアドレス(URL)とか
設定>一般設定>サイトアドレス(URL)も新しいアドレスに変わってるのに、自動で切り替わらないらしい。
原因
VPSのサーバにログインしてmySQL開いていろいろ調べてたら、そもそもWPのデータベースに登録されているURLが"http://192.168.11.5/うんたら"みたいな感じで古いままで、このデータベースの中身を書き換えないとダメな感じだった。
MariaDB [wordpress_db]> select guid from wp_posts; +---------------------------------------------------------------------------------------------------------+ | guid | +---------------------------------------------------------------------------------------------------------+ | http://192.168.11.5/blog/?page_id=2 | | http://192.168.11.5/blog/?p=8 | | http://192.168.11.5/blog/?p=9 | | http://192.168.11.5/blog/?p=12 | | http://192.168.11.5/blog/archives/13 | | http://192.168.11.5/blog/?p=14 | | http://192.168.11.5/blog/wp-content/uploads/2015/03/スクリーンショット-2015-03-03-10.21.30.png | | http://192.168.11.5/blog/archives/16 | | http://192.168.11.5/blog/?p=17 | | http://192.168.11.5/blog/?p=18 | | http://192.168.11.5/blog/?p=19 | | http://192.168.11.5/blog/?p=20 | | http://192.168.11.5/blog/?p=21 | | http://192.168.11.5/blog/?p=22 | | http://192.168.11.5/blog/wp-content/uploads/2015/03/SG-MAD.png | | http://192.168.11.5/blog/?p=24 | | http://192.168.11.5/blog/?p=25 | | http://192.168.11.5/blog/wp-content/uploads/2015/03/FMS-PV.png | | http://192.168.11.5/blog/?p=27 | | http://192.168.11.5/blog/?p=28 | | http://192.168.11.5/blog/wp-content/uploads/2015/03/isho-MV.png | | http://192.168.11.5/blog/?p=30 | | http://192.168.11.5/blog/?p=31 | | http://192.168.11.5/blog/?p=32 | | http://192.168.11.5/blog/?p=33 | | http://192.168.11.5/blog/?p=34 | | http://192.168.11.5/blog/?p=35 | | http://192.168.11.5/blog/wp-content/uploads/2015/03/mdmg-MAD.png | | http://192.168.11.5/blog/?p=37 | | http://192.168.11.5/blog/wp-content/uploads/2015/03/EotCF-MV.png | | http://192.168.11.5/blog/?p=39 | | http://192.168.11.5/blog/?p=40 | | http://192.168.11.5/blog/?p=41 | | http://192.168.11.5/blog/wp-content/uploads/2015/03/OC-CM.png | | http://192.168.11.5/blog/?p=43 | | http://192.168.11.5/blog/?p=44 | | http://192.168.11.5/blog/?p=45 | | http://192.168.11.5/blog/wp-content/uploads/2015/03/OC-WM.png | | http://192.168.11.5/blog/?p=47 | | http://192.168.11.5/blog/?p=48 | | http://192.168.11.5/blog/?p=49 | | http://192.168.11.5/blog/wp-content/uploads/2015/03/jj-MV.png | | http://192.168.11.5/blog/?p=51 | | http://192.168.11.5/blog/wp-content/uploads/2015/03/VVV-MAD.png | | http://192.168.11.5/blog/?p=53 | | http://192.168.11.5/blog/?p=54 | | http://192.168.11.5/blog/?p=55 | | http://192.168.11.5/blog/wp-content/uploads/2015/03/miku-summon.png | | http://192.168.11.5/blog/?p=57 | | http://192.168.11.5/blog/?p=58 | | http://192.168.11.5/blog/wp-content/uploads/2015/03/FMS-logo.jpg | | http://192.168.11.5/blog/wp-content/uploads/2015/03/FMSロゴ.jpg | | http://192.168.11.5/blog/?p=61 | | http://192.168.11.5/blog/?p=62 | | http://192.168.11.5/blog/?p=63 | | http://192.168.11.5/blog/?p=64 | | http://192.168.11.5/blog/?p=65 | | http://192.168.11.5/blog/wp-content/uploads/2015/03/FMS-PV2.png | | http://192.168.11.5/blog/?p=67 | | http://192.168.11.5/blog/?p=68 | | http://192.168.11.5/blog/?p=69 | | http://192.168.11.5/blog/?p=71 | | http://192.168.11.5/blog/wp-content/uploads/2015/03/copia-unidle.png | | http://192.168.11.5/blog/?p=73 | | http://192.168.11.5/blog/?p=74 | | http://192.168.11.5/blog/wp-content/uploads/2015/03/EC2014-dt.png | | http://192.168.11.5/blog/?p=76 | | http://192.168.11.5/blog/?p=77 | | http://192.168.11.5/blog/?p=78 | | http://192.168.11.5/blog/wp-content/uploads/2015/03/hoshinone-MV.png | | http://192.168.11.5/blog/?p=80 | | http://192.168.11.5/blog/?p=81 | | http://192.168.11.5/blog/?p=82 | | http://192.168.11.5/blog/wp-content/uploads/2015/03/MP2015-PV.png | | http://192.168.11.5/blog/?p=84 | | http://192.168.11.5/blog/?p=85 | | http://192.168.11.5/blog/?p=86 | | http://192.168.11.5/blog/wp-content/uploads/2015/03/SAO-MAD.png | | http://192.168.11.5/blog/?p=88 | | http://192.168.11.5/blog/wp-content/uploads/2015/03/sokon-top.jpg | | http://192.168.11.5/blog/?p=90 | | http://192.168.11.5/blog/?p=91 | | http://shutosg.net/blog/?p=92 | | http://shutosg.net/blog/?p=93 | | http://shutosg.net/blog/wp-content/uploads/2015/03/cc_glitch.jpg | | http://shutosg.net/blog/?p=95 | | http://shutosg.net/?p=96 | | http://shutosg.net/?p=97 | | http://shutosg.net/?p=98 | | http://shutosg.net/?p=99 | | http://shutosg.net/?p=100 | | http://shutosg.net/?p=101 | | http://shutosg.net/?p=102 | | http://shutosg.net/?p=103 | | http://shutosg.net/?p=104 | | http://shutosg.net/?p=105 | | http://shutosg.net/wp-content/uploads/2015/05/profile.png | | http://shutosg.net/wp-content/uploads/2015/05/HP_logo.png | | http://shutosg.net/?p=110 | | http://shutosg.net/wp-content/uploads/2015/05/next.png | | http://shutosg.net/wp-content/uploads/2015/05/previous.png | | http://shutosg.net/?p=113 | | http://shutosg.net/?p=114 | | http://shutosg.net/?p=116 | | http://shutosg.net/?p=117 | | http://shutosg.net/?p=119 | | http://shutosg.net/wp-content/uploads/2015/06/best-teacher.png | | http://shutosg.net/?p=121 | | http://shutosg.net/wp-content/uploads/2015/06/fmsctf-logo.jpg | | http://shutosg.net/?p=123 | | http://shutosg.net/?p=124 | | http://shutosg.net/?p=125 | | http://shutosg.net/?p=126 | | http://shutosg.net/?p=127 | | http://shutosg.net/?p=128 | | http://shutosg.net/?p=130 | | http://shutosg.net/?p=131 | | http://shutosg.net/wp-content/uploads/2015/09/gabriel-mirage-150x150.png | | http://shutosg.net/?p=134 | | http://shutosg.net/wp-content/uploads/2015/10/jikuuyuuei-150x150.png | | http://shutosg.net/?p=136 | | http://shutosg.net/?p=137 | | http://shutosg.net/?p=139 | | http://shutosg.net/?p=140 | | http://shutosg.net/?p=141 | +---------------------------------------------------------------------------------------------------------+ 125 rows in set (0.00 sec)
解決策
mySQLでデータベースを書き換える
ググったけどろくな情報はみつからず、上記のようにデータベースの内容を直接書き換えないといけない(しかも一部はちゃんと新しいURLになってる…)のは明確だったので、しかたなく普段書かないmySQLを調べ始めた。。。
データベースを開く
サーバに接続(CentOS7.1にsshでリモートログイン)した状態で
$ mysql -ushuto -p -Dwordpress_db Enter password:
としてデータベースに接続する。ここで、shutoはユーザ名、wordpress_dbはデータベース名なので人によって変わる。覚えていない人はWordPressのディレクトリにあるwp-config.phpの中を見ると
define('DB_NAME', 'wordpress_db'); define('DB_USER', 'shuto'); define('DB_PASSWORD', '**********');
と言った感じで必要な情報が定義されているのでそこを見るとよい。(ただしこのファイルは外部に流出すると危険なので取り扱い厳重注意)
テーブルの確認
まず最初にデータベースがどういう構造をしているのか確認する。
MariaDB [wordpress_db]> SHOW TABLES; +------------------------+ | Tables_in_wordpress_db | +------------------------+ | wp_commentmeta | | wp_comments | | wp_duplicator_packages | | wp_links | | wp_options | | wp_postmeta | | wp_posts | | wp_term_relationships | | wp_term_taxonomy | | wp_terms | | wp_usermeta | | wp_users | +------------------------+ 12 rows in set (0.00 sec)
この場合これらの12のテーブルがあるようだ。
そこで地道に
SELECT * FROM wp_commentmeta;
とかしてそれぞれのテーブルの中身を全部見ていった。
結局当たりがwp_postsで、
SELECT * FROM wp_posts;
とするとアホみたいに大量の内容が表示され、その中に古いリンクが記述されたカラムもあった。
結局問題のURLは、wp_postsテーブルのguidというカラムに格納されていることが分かった。内容が多いのでIDとguidのみ表示させると、
MariaDB [wordpress_db]> SELECT ID, guid FROM wp_posts; +-----+---------------------------------------------------------------------------------------------------------+ | ID | guid | +-----+---------------------------------------------------------------------------------------------------------+ | 2 | http://192.168.11.5/blog/?page_id=2 | | 8 | http://192.168.11.5/blog/?p=8 | | 9 | http://192.168.11.5/blog/?p=9 | | 12 | http://192.168.11.5/blog/?p=12 | | 13 | http://192.168.11.5/blog/archives/13 | | 14 | http://192.168.11.5/blog/?p=14 | | 15 | http://192.168.11.5/blog/wp-content/uploads/2015/03/スクリーンショット-2015-03-03-10.21.30.png | | 16 | http://192.168.11.5/blog/archives/16 | | 17 | http://192.168.11.5/blog/?p=17 | | 18 | http://192.168.11.5/blog/?p=18 | | 19 | http://192.168.11.5/blog/?p=19 | | 20 | http://192.168.11.5/blog/?p=20 | | 21 | http://192.168.11.5/blog/?p=21 | | 22 | http://192.168.11.5/blog/?p=22 | | 23 | http://192.168.11.5/blog/wp-content/uploads/2015/03/SG-MAD.png | | 24 | http://192.168.11.5/blog/?p=24 | | 25 | http://192.168.11.5/blog/?p=25 | | 26 | http://192.168.11.5/blog/wp-content/uploads/2015/03/FMS-PV.png | | 27 | http://192.168.11.5/blog/?p=27 | | 28 | http://192.168.11.5/blog/?p=28 | | 29 | http://192.168.11.5/blog/wp-content/uploads/2015/03/isho-MV.png | | 30 | http://192.168.11.5/blog/?p=30 | | 31 | http://192.168.11.5/blog/?p=31 | | 32 | http://192.168.11.5/blog/?p=32 | | 33 | http://192.168.11.5/blog/?p=33 | | 34 | http://192.168.11.5/blog/?p=34 | | 35 | http://192.168.11.5/blog/?p=35 | | 36 | http://192.168.11.5/blog/wp-content/uploads/2015/03/mdmg-MAD.png | | 37 | http://192.168.11.5/blog/?p=37 | | 38 | http://192.168.11.5/blog/wp-content/uploads/2015/03/EotCF-MV.png | | 39 | http://192.168.11.5/blog/?p=39 | | 40 | http://192.168.11.5/blog/?p=40 | | 41 | http://192.168.11.5/blog/?p=41 | | 42 | http://192.168.11.5/blog/wp-content/uploads/2015/03/OC-CM.png | | 43 | http://192.168.11.5/blog/?p=43 | | 44 | http://192.168.11.5/blog/?p=44 | | 45 | http://192.168.11.5/blog/?p=45 | | 46 | http://192.168.11.5/blog/wp-content/uploads/2015/03/OC-WM.png | | 47 | http://192.168.11.5/blog/?p=47 | | 48 | http://192.168.11.5/blog/?p=48 | | 49 | http://192.168.11.5/blog/?p=49 | | 50 | http://192.168.11.5/blog/wp-content/uploads/2015/03/jj-MV.png | | 51 | http://192.168.11.5/blog/?p=51 | | 52 | http://192.168.11.5/blog/wp-content/uploads/2015/03/VVV-MAD.png | | 53 | http://192.168.11.5/blog/?p=53 | | 54 | http://192.168.11.5/blog/?p=54 | | 55 | http://192.168.11.5/blog/?p=55 | | 56 | http://192.168.11.5/blog/wp-content/uploads/2015/03/miku-summon.png | | 57 | http://192.168.11.5/blog/?p=57 | | 58 | http://192.168.11.5/blog/?p=58 | | 59 | http://192.168.11.5/blog/wp-content/uploads/2015/03/FMS-logo.jpg | | 60 | http://192.168.11.5/blog/wp-content/uploads/2015/03/FMSロゴ.jpg | | 61 | http://192.168.11.5/blog/?p=61 | | 62 | http://192.168.11.5/blog/?p=62 | | 63 | http://192.168.11.5/blog/?p=63 | | 64 | http://192.168.11.5/blog/?p=64 | | 65 | http://192.168.11.5/blog/?p=65 | | 66 | http://192.168.11.5/blog/wp-content/uploads/2015/03/FMS-PV2.png | | 67 | http://192.168.11.5/blog/?p=67 | | 68 | http://192.168.11.5/blog/?p=68 | | 69 | http://192.168.11.5/blog/?p=69 | | 71 | http://192.168.11.5/blog/?p=71 | | 72 | http://192.168.11.5/blog/wp-content/uploads/2015/03/copia-unidle.png | | 73 | http://192.168.11.5/blog/?p=73 | | 74 | http://192.168.11.5/blog/?p=74 | | 75 | http://192.168.11.5/blog/wp-content/uploads/2015/03/EC2014-dt.png | | 76 | http://192.168.11.5/blog/?p=76 | | 77 | http://192.168.11.5/blog/?p=77 | | 78 | http://192.168.11.5/blog/?p=78 | | 79 | http://192.168.11.5/blog/wp-content/uploads/2015/03/hoshinone-MV.png | | 80 | http://192.168.11.5/blog/?p=80 | | 81 | http://192.168.11.5/blog/?p=81 | | 82 | http://192.168.11.5/blog/?p=82 | | 83 | http://192.168.11.5/blog/wp-content/uploads/2015/03/MP2015-PV.png | | 84 | http://192.168.11.5/blog/?p=84 | | 85 | http://192.168.11.5/blog/?p=85 | | 86 | http://192.168.11.5/blog/?p=86 | | 87 | http://192.168.11.5/blog/wp-content/uploads/2015/03/SAO-MAD.png | | 88 | http://192.168.11.5/blog/?p=88 | | 89 | http://192.168.11.5/blog/wp-content/uploads/2015/03/sokon-top.jpg | | 90 | http://192.168.11.5/blog/?p=90 | | 91 | http://192.168.11.5/blog/?p=91 | | 92 | http://shutosg.net/blog/?p=92 | | 93 | http://shutosg.net/blog/?p=93 | | 94 | http://shutosg.net/blog/wp-content/uploads/2015/03/cc_glitch.jpg | | 95 | http://shutosg.net/blog/?p=95 | | 96 | http://shutosg.net/?p=96 | | 97 | http://shutosg.net/?p=97 | | 98 | http://shutosg.net/?p=98 | | 99 | http://shutosg.net/?p=99 | | 100 | http://shutosg.net/?p=100 | | 101 | http://shutosg.net/?p=101 | | 102 | http://shutosg.net/?p=102 | | 103 | http://shutosg.net/?p=103 | | 104 | http://shutosg.net/?p=104 | | 105 | http://shutosg.net/?p=105 | | 108 | http://shutosg.net/wp-content/uploads/2015/05/profile.png | | 109 | http://shutosg.net/wp-content/uploads/2015/05/HP_logo.png | | 110 | http://shutosg.net/?p=110 | | 111 | http://shutosg.net/wp-content/uploads/2015/05/next.png | | 112 | http://shutosg.net/wp-content/uploads/2015/05/previous.png | | 113 | http://shutosg.net/?p=113 | | 114 | http://shutosg.net/?p=114 | | 116 | http://shutosg.net/?p=116 | | 117 | http://shutosg.net/?p=117 | | 119 | http://shutosg.net/?p=119 | | 120 | http://shutosg.net/wp-content/uploads/2015/06/best-teacher.png | | 121 | http://shutosg.net/?p=121 | | 122 | http://shutosg.net/wp-content/uploads/2015/06/fmsctf-logo.jpg | | 123 | http://shutosg.net/?p=123 | | 124 | http://shutosg.net/?p=124 | | 125 | http://shutosg.net/?p=125 | | 126 | http://shutosg.net/?p=126 | | 127 | http://shutosg.net/?p=127 | | 128 | http://shutosg.net/?p=128 | | 130 | http://shutosg.net/?p=130 | | 131 | http://shutosg.net/?p=131 | | 132 | http://shutosg.net/wp-content/uploads/2015/09/gabriel-mirage-150x150.png | | 134 | http://shutosg.net/?p=134 | | 135 | http://shutosg.net/wp-content/uploads/2015/10/jikuuyuuei-150x150.png | | 136 | http://shutosg.net/?p=136 | | 137 | http://shutosg.net/?p=137 | | 139 | http://shutosg.net/?p=139 | | 140 | http://shutosg.net/?p=140 | | 141 | http://shutosg.net/?p=141 | +-----+---------------------------------------------------------------------------------------------------------+ 125 rows in set (0.00 sec)
といった感じに表示された。
問題のURLは古いローカルIPを含むものなので、例えばid=83とかがそれにあたる。
書き換え対象を正規表現を使って抽出してみる
最終的には古いURLを新しいURLで置き換えたいけど、まずは抽出ができるか試してみる。
LIKE文の派生系でRLIKEという正規表現が使えるものがあるらしいので、【guidの前方が「http://192.」と一致する】という条件でやってみる。
参考リンク
www.dbonline.jp
MariaDB [wordpress_db]> SELECT id,guid FROM wp_posts WHERE guid RLIKE "^http://192."; +----+---------------------------------------------------------------------------------------------------------+ | id | guid | +----+---------------------------------------------------------------------------------------------------------+ | 2 | http://192.168.11.5/blog/?page_id=2 | | 8 | http://192.168.11.5/blog/?p=8 | | 9 | http://192.168.11.5/blog/?p=9 | | 12 | http://192.168.11.5/blog/?p=12 | | 13 | http://192.168.11.5/blog/archives/13 | | 14 | http://192.168.11.5/blog/?p=14 | | 15 | http://192.168.11.5/blog/wp-content/uploads/2015/03/スクリーンショット-2015-03-03-10.21.30.png | | 16 | http://192.168.11.5/blog/archives/16 | | 17 | http://192.168.11.5/blog/?p=17 | | 18 | http://192.168.11.5/blog/?p=18 | | 19 | http://192.168.11.5/blog/?p=19 | | 20 | http://192.168.11.5/blog/?p=20 | | 21 | http://192.168.11.5/blog/?p=21 | | 22 | http://192.168.11.5/blog/?p=22 | | 23 | http://192.168.11.5/blog/wp-content/uploads/2015/03/SG-MAD.png | | 24 | http://192.168.11.5/blog/?p=24 | | 25 | http://192.168.11.5/blog/?p=25 | | 26 | http://192.168.11.5/blog/wp-content/uploads/2015/03/FMS-PV.png | | 27 | http://192.168.11.5/blog/?p=27 | | 28 | http://192.168.11.5/blog/?p=28 | | 29 | http://192.168.11.5/blog/wp-content/uploads/2015/03/isho-MV.png | | 30 | http://192.168.11.5/blog/?p=30 | | 31 | http://192.168.11.5/blog/?p=31 | | 32 | http://192.168.11.5/blog/?p=32 | | 33 | http://192.168.11.5/blog/?p=33 | | 34 | http://192.168.11.5/blog/?p=34 | | 35 | http://192.168.11.5/blog/?p=35 | | 36 | http://192.168.11.5/blog/wp-content/uploads/2015/03/mdmg-MAD.png | | 37 | http://192.168.11.5/blog/?p=37 | | 38 | http://192.168.11.5/blog/wp-content/uploads/2015/03/EotCF-MV.png | | 39 | http://192.168.11.5/blog/?p=39 | | 40 | http://192.168.11.5/blog/?p=40 | | 41 | http://192.168.11.5/blog/?p=41 | | 42 | http://192.168.11.5/blog/wp-content/uploads/2015/03/OC-CM.png | | 43 | http://192.168.11.5/blog/?p=43 | | 44 | http://192.168.11.5/blog/?p=44 | | 45 | http://192.168.11.5/blog/?p=45 | | 46 | http://192.168.11.5/blog/wp-content/uploads/2015/03/OC-WM.png | | 47 | http://192.168.11.5/blog/?p=47 | | 48 | http://192.168.11.5/blog/?p=48 | | 49 | http://192.168.11.5/blog/?p=49 | | 50 | http://192.168.11.5/blog/wp-content/uploads/2015/03/jj-MV.png | | 51 | http://192.168.11.5/blog/?p=51 | | 52 | http://192.168.11.5/blog/wp-content/uploads/2015/03/VVV-MAD.png | | 53 | http://192.168.11.5/blog/?p=53 | | 54 | http://192.168.11.5/blog/?p=54 | | 55 | http://192.168.11.5/blog/?p=55 | | 56 | http://192.168.11.5/blog/wp-content/uploads/2015/03/miku-summon.png | | 57 | http://192.168.11.5/blog/?p=57 | | 58 | http://192.168.11.5/blog/?p=58 | | 59 | http://192.168.11.5/blog/wp-content/uploads/2015/03/FMS-logo.jpg | | 60 | http://192.168.11.5/blog/wp-content/uploads/2015/03/FMSロゴ.jpg | | 61 | http://192.168.11.5/blog/?p=61 | | 62 | http://192.168.11.5/blog/?p=62 | | 63 | http://192.168.11.5/blog/?p=63 | | 64 | http://192.168.11.5/blog/?p=64 | | 65 | http://192.168.11.5/blog/?p=65 | | 66 | http://192.168.11.5/blog/wp-content/uploads/2015/03/FMS-PV2.png | | 67 | http://192.168.11.5/blog/?p=67 | | 68 | http://192.168.11.5/blog/?p=68 | | 69 | http://192.168.11.5/blog/?p=69 | | 71 | http://192.168.11.5/blog/?p=71 | | 72 | http://192.168.11.5/blog/wp-content/uploads/2015/03/copia-unidle.png | | 73 | http://192.168.11.5/blog/?p=73 | | 74 | http://192.168.11.5/blog/?p=74 | | 75 | http://192.168.11.5/blog/wp-content/uploads/2015/03/EC2014-dt.png | | 76 | http://192.168.11.5/blog/?p=76 | | 77 | http://192.168.11.5/blog/?p=77 | | 78 | http://192.168.11.5/blog/?p=78 | | 79 | http://192.168.11.5/blog/wp-content/uploads/2015/03/hoshinone-MV.png | | 80 | http://192.168.11.5/blog/?p=80 | | 81 | http://192.168.11.5/blog/?p=81 | | 82 | http://192.168.11.5/blog/?p=82 | | 84 | http://192.168.11.5/blog/?p=84 | | 85 | http://192.168.11.5/blog/?p=85 | | 86 | http://192.168.11.5/blog/?p=86 | | 87 | http://192.168.11.5/blog/wp-content/uploads/2015/03/SAO-MAD.png | | 88 | http://192.168.11.5/blog/?p=88 | | 90 | http://192.168.11.5/blog/?p=90 | | 91 | http://192.168.11.5/blog/?p=91 | +----+---------------------------------------------------------------------------------------------------------+ 80 rows in set (0.00 sec)
いけたいけた。
正規表現で抽出した箇所を置換する
今度は古いURLを新しいURLに置き換える。
旧|http://192.168.11.5/blog/うんたら 新|http://shutosg.net/うんたら
といった感じだ。
これにはREPLACE()という関数があるらしいのでそれをって置き換えるのだが、実際にテーブル内の内容を更新するにはUPDATE文も使う。
REPLACE()関数について
文字列比較関数、正規表現|MySQL内部関数|MySQL|PHP & JavaScript Room
UPDATE文について
MySQL: レコードの更新と削除 – UPDATE、DELETE文www.yukun.info
一気に書き換えるのは怖いので、とりあえずid=87だけ書き換えてみる。
MariaDB [wordpress_db]> UPDATE wp_posts SET guid = REPLACE(guid, "192.168.11.5/blog", "shutosg.net") WHERE id = 87; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0
書き換えられたか確認する。
MariaDB [wordpress_db]> SELECT id, guid FROM wp_posts WHERE id = 87; +----+-----------------------------------------------------------------+ | id | guid | +----+-----------------------------------------------------------------+ | 87 | http://shutosg.net/wp-content/uploads/2015/03/SAO-MAD.png | +----+-----------------------------------------------------------------+ 1 row in set (0.00 sec)
できてる!!しかもこの時点でダッシュボードのメディアライブラリを見てみても、きちんとリンク切れが直っていた。
ってことで全部置き換えよう。
MariaDB [wordpress_db]> UPDATE wp_posts SET guid = REPLACE(guid, "192.168.11.5/blog", "shutosg.net") WHERE guid RLIKE "^http://192."; Query OK, 80 rows affected (0.00 sec) Rows matched: 80 Changed: 80 Warnings: 0
再度確認。
MariaDB [wordpress_db]> SELECT id,guid FROM wp_posts; +-----+---------------------------------------------------------------------------------------------------+ | id | guid | +-----+---------------------------------------------------------------------------------------------------+ | 2 | http://shutosg.net/?page_id=2 | | 8 | http://shutosg.net/?p=8 | | 9 | http://shutosg.net/?p=9 | | 12 | http://shutosg.net/?p=12 | | 13 | http://shutosg.net/archives/13 | | 14 | http://shutosg.net/?p=14 | | 15 | http://shutosg.net/wp-content/uploads/2015/03/スクリーンショット-2015-03-03-10.21.30.png | | 16 | http://shutosg.net/archives/16 | | 17 | http://shutosg.net/?p=17 | | 18 | http://shutosg.net/?p=18 | | 19 | http://shutosg.net/?p=19 | | 20 | http://shutosg.net/?p=20 | | 21 | http://shutosg.net/?p=21 | | 22 | http://shutosg.net/?p=22 | | 23 | http://shutosg.net/wp-content/uploads/2015/03/SG-MAD.png | | 24 | http://shutosg.net/?p=24 | | 25 | http://shutosg.net/?p=25 | | 26 | http://shutosg.net/wp-content/uploads/2015/03/FMS-PV.png | | 27 | http://shutosg.net/?p=27 | | 28 | http://shutosg.net/?p=28 | | 29 | http://shutosg.net/wp-content/uploads/2015/03/isho-MV.png | | 30 | http://shutosg.net/?p=30 | | 31 | http://shutosg.net/?p=31 | | 32 | http://shutosg.net/?p=32 | | 33 | http://shutosg.net/?p=33 | | 34 | http://shutosg.net/?p=34 | | 35 | http://shutosg.net/?p=35 | | 36 | http://shutosg.net/wp-content/uploads/2015/03/mdmg-MAD.png | | 37 | http://shutosg.net/?p=37 | | 38 | http://shutosg.net/wp-content/uploads/2015/03/EotCF-MV.png | | 39 | http://shutosg.net/?p=39 | | 40 | http://shutosg.net/?p=40 | | 41 | http://shutosg.net/?p=41 | | 42 | http://shutosg.net/wp-content/uploads/2015/03/OC-CM.png | | 43 | http://shutosg.net/?p=43 | | 44 | http://shutosg.net/?p=44 | | 45 | http://shutosg.net/?p=45 | | 46 | http://shutosg.net/wp-content/uploads/2015/03/OC-WM.png | | 47 | http://shutosg.net/?p=47 | | 48 | http://shutosg.net/?p=48 | | 49 | http://shutosg.net/?p=49 | | 50 | http://shutosg.net/wp-content/uploads/2015/03/jj-MV.png | | 51 | http://shutosg.net/?p=51 | | 52 | http://shutosg.net/wp-content/uploads/2015/03/VVV-MAD.png | | 53 | http://shutosg.net/?p=53 | | 54 | http://shutosg.net/?p=54 | | 55 | http://shutosg.net/?p=55 | | 56 | http://shutosg.net/wp-content/uploads/2015/03/miku-summon.png | | 57 | http://shutosg.net/?p=57 | | 58 | http://shutosg.net/?p=58 | | 59 | http://shutosg.net/wp-content/uploads/2015/03/FMS-logo.jpg | | 60 | http://shutosg.net/wp-content/uploads/2015/03/FMSロゴ.jpg | | 61 | http://shutosg.net/?p=61 | | 62 | http://shutosg.net/?p=62 | | 63 | http://shutosg.net/?p=63 | | 64 | http://shutosg.net/?p=64 | | 65 | http://shutosg.net/?p=65 | | 66 | http://shutosg.net/wp-content/uploads/2015/03/FMS-PV2.png | | 67 | http://shutosg.net/?p=67 | | 68 | http://shutosg.net/?p=68 | | 69 | http://shutosg.net/?p=69 | | 71 | http://shutosg.net/?p=71 | | 72 | http://shutosg.net/wp-content/uploads/2015/03/copia-unidle.png | | 73 | http://shutosg.net/?p=73 | | 74 | http://shutosg.net/?p=74 | | 75 | http://shutosg.net/wp-content/uploads/2015/03/EC2014-dt.png | | 76 | http://shutosg.net/?p=76 | | 77 | http://shutosg.net/?p=77 | | 78 | http://shutosg.net/?p=78 | | 79 | http://shutosg.net/wp-content/uploads/2015/03/hoshinone-MV.png | | 80 | http://shutosg.net/?p=80 | | 81 | http://shutosg.net/?p=81 | | 82 | http://shutosg.net/?p=82 | | 83 | http://shutosg.net/wp-content/uploads/2015/03/MP2015-PV.png | | 84 | http://shutosg.net/?p=84 | | 85 | http://shutosg.net/?p=85 | | 86 | http://shutosg.net/?p=86 | | 87 | http://shutosg.net/wp-content/uploads/2015/03/SAO-MAD.png | | 88 | http://shutosg.net/?p=88 | | 89 | http://shutosg.net/wp-content/uploads/2015/03/sokon-top.jpg | | 90 | http://shutosg.net/?p=90 | | 91 | http://shutosg.net/?p=91 | | 92 | http://shutosg.net/blog/?p=92 | | 93 | http://shutosg.net/blog/?p=93 | | 95 | http://shutosg.net/blog/?p=95 | | 96 | http://shutosg.net/?p=96 | | 97 | http://shutosg.net/?p=97 | | 98 | http://shutosg.net/?p=98 | | 99 | http://shutosg.net/?p=99 | | 100 | http://shutosg.net/?p=100 | | 101 | http://shutosg.net/?p=101 | | 102 | http://shutosg.net/?p=102 | | 103 | http://shutosg.net/?p=103 | | 104 | http://shutosg.net/?p=104 | | 105 | http://shutosg.net/?p=105 | | 108 | http://shutosg.net/wp-content/uploads/2015/05/profile.png | | 109 | http://shutosg.net/wp-content/uploads/2015/05/HP_logo.png | | 110 | http://shutosg.net/?p=110 | | 111 | http://shutosg.net/wp-content/uploads/2015/05/next.png | | 112 | http://shutosg.net/wp-content/uploads/2015/05/previous.png | | 113 | http://shutosg.net/?p=113 | | 114 | http://shutosg.net/?p=114 | | 116 | http://shutosg.net/?p=116 | | 117 | http://shutosg.net/?p=117 | | 119 | http://shutosg.net/?p=119 | | 120 | http://shutosg.net/wp-content/uploads/2015/06/best-teacher.png | | 121 | http://shutosg.net/?p=121 | | 122 | http://shutosg.net/wp-content/uploads/2015/06/fmsctf-logo.jpg | | 123 | http://shutosg.net/?p=123 | | 124 | http://shutosg.net/?p=124 | | 125 | http://shutosg.net/?p=125 | | 126 | http://shutosg.net/?p=126 | | 127 | http://shutosg.net/?p=127 | | 128 | http://shutosg.net/?p=128 | | 130 | http://shutosg.net/?p=130 | | 131 | http://shutosg.net/?p=131 | | 132 | http://shutosg.net/wp-content/uploads/2015/09/gabriel-mirage-150x150.png | | 134 | http://shutosg.net/?p=134 | | 135 | http://shutosg.net/wp-content/uploads/2015/10/jikuuyuuei-150x150.png | | 136 | http://shutosg.net/?p=136 | | 137 | http://shutosg.net/?p=137 | | 139 | http://shutosg.net/?p=139 | | 140 | http://shutosg.net/?p=140 | | 141 | http://shutosg.net/?p=141 | +-----+---------------------------------------------------------------------------------------------------+ 124 rows in set (0.00 sec)
というわけで全ての画像のリンク切れを直せましたとさ。