WordPressのtable_prefix変更
12 04 2008Wordpressのwp-config.phpで設定する $table_prefix ですが、これを運用途中で変更すると管理画面にログインできなくなる可能性があります。
英語版と日本語版のある某サイトでWordpressのデータベースを引越したのですが、そのとき
MYDB_en
MYDB_ja
という二つのMySQLデータベースを使うようになっていたので、MYDBに一本化し、table_prefixを ‘wp_’ からそれぞれ ‘ja_’ と ‘en_’ に変更しようとして少し嵌りました。
データベースの引越とテーブル名の変更は、同一マシン上ですから
RENAME TABLE MYDB_ja.wp_users TO MYDB.ja_users;
なんてデータベースをまたいでテーブルをrenameするというMySQLならではの荒技で簡単に出来たのですが、これだけでは不十分でした。
ja_options.option_name\nja_usermeta.meta_key
こいつらの中に ‘wp_’で始まる値が残っており、それらも更新してやる必要があったのです
select option_name from ja_options where option_name like 'wp_%';
だとか
select meta_key from ja_usermeta where meta_key like 'wp_%';
だとかで調べて、必要に応じて
update ja_options set option_name = 'ja_user_roles' where option_name = 'wp_user_roles';
だとか
update ja_usermeta set meta_key= 'ja_capabilities' where meta_key= 'wp_capabilities';
だとかで更新してやると、ちゃんと動くようになりました(もちろん、en_の方も同様に)。
# table_prefixをkeyに使うなよ!って気はしますが、そうなってしまってるものは仕方ないわけです
最近のコメント