phpmyadminで主キー・インデックスデータの変更・削除をする方法

phpmyadminで他のカラムに主キーを設定してしまったので後で変更したい、もしくは「#1062 – Duplicate entry ‘1’ for key ‘PRIMARY’」というエラーが出てしまって、プライマリキーに設定するものを変更したいということがあるかと思います。phpmyadmin上で設定する方法・削除変更がphpmyadminのバージョンが変更されていてデザインが変わってしまっているので意外とわかりづらい部分がありますのでご紹介します。

phpmyadminでのインデックスの変更方法

phpmyadmin

1.指定のテーブルの構造ボタンを押す

表示の右側に構造のタブがありますので、こちらを押下します。そうすると上の画像のようにこのテーブルのデータ型やタイムスタンプの設定、auto_incrementの設定などが一覧で確認出来ます。

挿入タブからsqlを実行したりも出来ますよね。今回はインデックスの情報の変更なので、挿入タブなどの説明に関しては省きます。

挿入タブからのデータ挿入でテーブルの設定のデバック

ちなみに、phpなどで自分が書いたsqlが間違っているのか、コードで判断できない方は、挿入からのデータを入力して実行してみるとエラーが起きますのでそれでチェックするという方法もあります。

例えばですが今回のような例でいうと「#1062 - Duplicate entry '1' for key 'PRIMARY'」などのエラーが起きますので、これを元に検索などをかけるとある程度引っかかってきますので、デバックするときにいちいちコードを書くのが面倒だ、「コードの書き方がわからない」という方はぜひ試してみてください。

2.構造ページの下にあるインデックスのプラスボタンを押下

phpmyadmin

phpmyadminのバージョンによっても画面のデザインが変更される可能性がありますのでご注意ください。他のphpmyadminに関する記事などでも結構古いバージョンのデザインのキャプチャが使われていて少し迷ってしまったのでバージョンも掲載しておきます。
※この記事の時点のphpmyadminのバージョンは4.0.10.15

+インデックスと書かれているテキストをクリックするとインデックスのデータ情報が展開されます。

3.展開されたインデックスの情報から削除

phpmyadmin

今回の記事ではprimaryの削除を行っていきます。注意のアラート部分が表示されていますが、無駄な設定が多い場合にはここのアラート項目が増えていますので、意味を理解しながら削除するようにしてください。

※上記の画像はidだけになっていますが、company_idもprimaryキーに設定されていたので削除しています。

削除のやり方

●「キー名」が「PRIMARY」という項目がありますのでそれを、すぐ左の「削除マーク」を押して削除してください。非常に簡単に削除できてしまいますが、実際のアプリケーションの挙動にも変化がある場合もありますので、注意して行うようにしましょう。

インデックスデータを変更したい理由

今回は例えば、company_idにもprimaryキーが設定されてしまっていると、企業AをユーザーAがお気に入りや何かをした場合に他のユーザーBはお気に入り等が行えなくなってしまっていました。

お気に入り機能というのは通常ユーザーごとに行えるものですので、company_idをprimaryキーに設定してはダメですよね。なので、インデックスデータから情報を変更する必要がありました。

最初から設定が間違っていて、実装しながら気づくということもあるかもしれませんが(普通は間違わないですが)、今回のように変更して削除したい場合などはぜひ参考にしてみてください。