雨過天晴

カテゴリーIDを変えようとしたら再インポートすることになった

2014.12.03

img from: mockDrop

この記事は2014年12月3日に書かれたものです。古い内容や非推奨要素を含む可能性がありますのでご注意ください。

カテゴリーIDを変えたいときってあるじゃないですか。じゃないですか、って言われても困ると思いますけど。
思い立ってまず見に行ったフォーラムには「なんで変える必要があるんですか」と書かれてました。でもね、あるんですよ。

主に自業自得で。

  1. A.お手軽編
    >> WordPress機能でカテゴリーIDをとりあえず変えたい
  2. B.データベース編 カテゴリーID変更(通常)
    >>データベース書き換えでIDを変えたい
  3. C.データベース編 インポートし直し
    >>いろいろあって上記ではできなかったので再インポート(溜息)

一言で済ますと、本番サーバー上のデータを適当にローカルにぶっ込んだ私が悪いんです。

お試しのつもりだったとはいえ、最初に本番サーバー上で作業を始めた数年前の自分がアホでした。テーマを自作するにあたり、本番で公開を始めた後でローカル環境を作る必要があったので、

1.ローカルにサーバー環境を作れるソフトを入れる XAMPP(Win)、MAMP(Mac)
2.ダウンロードしてきたWordPress本体をローカルで展開、インストール
3.本番サーバー上の投稿などのデータをローカルWordPressにインポート

という通常の手順を踏むわけです。ところが。
この「3.ローカルWordPressにインポート」作業を、WordPressへの他ブログからのお引越し時と同じように、何も考えずにWordPressのインポートエクスポートツールで行ってしまったため…あらゆるIDが…変わってしまわれたー。
なんということだ。

これまでは、大してカテゴリ数がなかったこともあり、
1.ローカルで作って
2.カテゴリーIDとか固有のID書き換えて
3.アップロード

していたのですが、面倒くさい。
非常に面倒くさい。

じゃあカテゴリーIDを変更しようと思い立ったのですが、google先生にお訊ねしたら…あれ?できなくね?できないの?えええ?
WordPressの機能にはそんなもの無いんだって!
そりゃそうか、ちゃんと作業してたら「ID変える必要ない」んですもんね。

でも変えます。

お手軽編

まだ記事が少ないなら、新しくカテゴリーを作って、本番環境とIDを揃えればいいですね。
(固定ページID変更も同じ方法でいける。多分。)

複数記事のカテゴリー変更も一括で出来ることだし、よしこれで行くぜ、と思ったら。
なぜか新規で作ったカテゴリ―のIDが大幅に飛んでしまいできませんでした。
多分過去に色々試そうとして、カテゴリー作っては消して作っては消して…してIDを無駄に消費したんだろうな全然覚えてないけど。

というわけで、やっぱりデータベースから触らないと駄目みたいです。

データベース編 カテゴリーID変更(通常)

データベースをうんぬんかんぬんする前に一応公式を、と見てみたのですが激しい眠気に襲われました。

とにかく、ここからphpMyAdminとお友達になります。

なにせSQL文書かなくていいんだから。できるよできる大丈夫。

予習が済んだら早速カテゴリーID部分の編集です。

ええと、普通はこれでいけるのでしょう。
私の場合、先程新規でカテゴリー作った時にカテゴリーIDが飛んでいたので予測はしていましたが、エラーが出ました。

「#1062 Duplicate entry ‘ID値’ for key ‘PRIMARY’」

つまり、そのIDとか諸々を既に使ってるわけですか。
見えるとこには無いんだけどなそのID(どのテーブルにあるかは知らない)。

このままじゃ無理ですね。

データベース編 インポートし直し

最初のインポートをミスってたわけだから、最初からちゃんとやり直せばよかったんです。

上記を参考に、本番サーバーからエクスポートして、url書き換えて、いざインポート!

「#1062 Duplicate entry ‘省略’ for key ‘PRIMARY’」

はい来た!!また来た!!!

すいません既存のデータ消すの忘れてましたあああああああ!
テーブルを削除して、もう一回やり直して…今度は正常終了。

WordPressログイン画面にアクセスするとインストール時の設定画面が出まして、不思議に思いながらとりあえず設定してダッシュボードへ。

あれ?投稿が一つもないよ?さっきインポートしたデータは?
もっかいデータベース確認…うん、中身もちゃんと入ってる。

あ。

接頭辞が違ってましたあああああああああああ!!
(もはやただの馬鹿だ)
ロリポップの簡単インストールで入れて、そのあとマルチサイト化したりごにょごにょいじってたから変な接頭辞になっているのですよ実は。ちゃんと計画して作らないとこういうことになりますよお嬢さん!

テーブルの接頭辞を変える方法があるようですね。

面倒なので(え)、ローカルのwp-config.phpの方の接頭辞を実際の接頭辞に書き換えて、無事投稿その他が表示されました。

これでカテゴリーIDが本番環境と揃い、今回の作業完了です。
WordPressの設定(ダッシュボードからいける部分)がいろいろ消えていたのでやり直して、さあテーマ編集だ!
と思ったら。
今度はトップページ以外のページが全て「Not Found」になる!なんでや!

これか!.htaccessか!
っていうかMAMP入れてからローカルでは一度も設定した覚えがないけど有効になってるのか?
……ええと、なってませんでした。

有効にしたよ!
じゃあ.htaccesだ、一体どこにファイルあるんだ、あれ隠しファイルじゃね?…と一抹の不安を覚えながら検索。
出ない。隠れてるね。
Windowsならフォルダオプションの設定変えればいいのですが、ええと、Macは?
以前記事にもしましたが詳しくないんですよMac。
で、調べたらそういうフォルダ表示をスルッと設定できるメニューはないのね。

うへぇコマンド、と閉口しかけましたが、やってみたらターミナルってコピペ効くのですね。
コマンドプロンプトって出来なくない?あれどうだっけ?
(完全に余談ですが、出来るそうです「コマンドプロンプトでコピー&ペースト」はー、なるほど。)

これで表示させて、先程の「5.2 ローカル環境に再構築した複製サイトのトップページ以外のページが表示されない」を参考に.htaccess編集して…できました!

カテゴリーIDも本番と揃ってる(当たり前だ)。

教訓:適当にせず、最初からちゃんと調べてやりましょう。