WordPress のテーブルプレフィクスを変更する時の注意点
WardPress では、テーブル名にプレフィクスをつけて、各ブログの区別をする事ができます。
プレフィクスとは、「wp_」とついている例のアレです。
今回は、このプレフィクスを変更したくなった場合の注意点をまとめてみます。
前提として、今回の記事は、WordPressのバージョンは2.6、データベースはMySQLを使用しています。
※注意!データベースをいじる前に、必ずバックアップを取ってください。また、この記事により問題が起きたとしても、当ブログでは責任は負いかねますのでご了承ください
プレフィクスは、wp_config.php で
$table_prefix = 'wp_';
として指定しています。
今回は「wp_」を「wp_test_」に変更してみます。
まずはその wp_config.php を書き換えます。
$table_prefix = 'wp_test_';
次に、MySQL からテーブル名を変更します。
ALTER TABLE `wp_comments` RENAME `wp_test_comments`;
ALTER TABLE `wp_links` RENAME `wp_test_links`;
ALTER TABLE `wp_options` RENAME `wp_test_options
ALTER TABLE `wp_postmeta` RENAME `wp_test_postmeta`;
ALTER TABLE `wp_posts` RENAME `wp_test_posts`;
ALTER TABLE `wp_term_relationships` RENAME `wp_test_term_relationships`;
ALTER TABLE `wp_term_taxonomy` RENAME `wp_test_term_taxonomy`;
ALTER TABLE `wp_terms` RENAME `wp_test_terms`;
ALTER TABLE `wp_usermeta` RENAME `wp_test_usermeta`;
ALTER TABLE `wp_users` RENAME `wp_test_users`;
これで完了です。いざ管理画面にログイーン!
このページにアクセスするための十分なアクセス権がありません
ええ!権限がなくなった!なんで!
はい。これは、変更前のプレフィクス('wp_')を使用したデータが、データベース内に存在してしまっているからです。
それぞれ、ちゃんとしたプレフィクスに変更してやる必要があります。
具体的には「wp_options」テーブルの「option_name」カラムの中の「wp_user_roles」、
「wp_usermeta」テーブルの「meta_key」カラムの中の「wp_capabilities」、
同じく「wp_usermeta」テーブルの「meta_key」カラムの中の「wp_user_level」を、
それぞれ直します。
UPDATE wp_test_options SET option_name = 'wp_test_user_roles' WHERE option_name = 'wp_user_roles';
UPDATE wp_test_usermeta SET meta_key = 'wp_test_capabilities' WHERE meta_key = 'wp_capabilities';
UPDATE wp_test_usermeta SET meta_key = 'wp_test_user_level' WHERE meta_key = 'wp_user_level';
これで OK。
管理画面にログインしてみて、無事にログインできれば完了です。