データベースをいじっていたら「#1075 – 不正な表定義です。AUTO_INCREMENT列は1個までで、索引を定義する必要があります。」というエラーダイアログがポップアップしてテーブルを保存できなくなったので、そのときに試した対処法を記載します。
設定内容:
テーブル名:users
カラム1:id / データ型 INT / 長さ値 — / デフォルト値 なし / インデックス PRIMARY / A_I (AUTO_INCREMENT)
カラム2:created_at / データ型 DATETIME / 長さ値 — / デフォルト値 なし
カラム3:updated_at / データ型 TIMESTAMP / 長さ値 — / デフォルト値 なし
カラム4:del / データ型 BOOLEAN / 長さ値 — / デフォルト値 なし
カラム5:username / データ型 VARCHAR / 長さ値 255 / デフォルト値 なし
カラム6:password / データ型 VARCHAR / 長さ値 255 / デフォルト値 なし
カラム7:email / データ型 VARCHAR / 長さ値 255 / デフォルト値 なし
当方環境:
・Mac OS 10.14.3 (Mojave)
・サーバのバージョン:5.7.25 – MySQL Community Server (GPL)
・phpMyAdmin のバージョン:4.8.5
・MAMPのバージョン:5.3
エラーへの対処法
- idカラムでインデックスのプルダウンから — を選択
- idカラムでインデックスのプルダウンから PRIMARY を選択
- 「インデックスを追加する」のダイアログが出たら「実行」をクリック
- テーブルを保存する
要するに、いったんインデックスを — にしてから、再度 PRIMARY として選びなおすだけですね。
A_I (AUTO_INCREMENT) が複数のカラムで選択されているときも同じ #1075 のエラーが出るので、上記で解決しない場合は、2つ以上の場所でチェックが入っていないかも確認してください。
何故エラーが起こるのか
基本的に、ID番号や従業員番号などのように、テーブルに登録されたカラムのうち任意の情報特定がしやすく、 AUTO_INCREMENT になっているようなカラムは主キー(Primary Key)にする必要があります。
それでインデックスのプルダウンを「PRIMARY」に選択しているのですが、インデックスに追加しますか→はい/いいえ みたいな画面をすっ飛ばす(キャンセルまたはxボタンを押してしまう)と、このようなエラーにはまってしまうことがあります。この画面が出ないphpMyAdminのバージョンもあるので、余計に混乱するのだと思います。
慣れている人なら画面を飛ばしたりしないか、インデックスが狙い通り PRIMARY になっていない場合は画面の表示ですぐに気付けるのですが、慣れない内はこういうことがよくあるようです。
インデックスが正しく PRIMARYとして実行できた場合は以下のような画面表示になります。
「PRIMARY」のプルダウンが選ばれているだけでなく、インデックス欄に「PRIMARY」という表示も追加される…正直初心者からしたら「知らんがな」という感じですね。
エラーになったときも、A_Iがチェックされているのは1箇所だけだし、プルダウンでも PRYMARY を選択できているので、なんでやねんとなります。なんでやねんとなった皆さま、お疲れ様でした。
参考URL:
https://www.epano-school.com/blog/mamechishiki-33/
https://www.1keydata.com/jp/sql/sql-primary-key.php
http://bmath.org/wordpress/?p=802
2019/3/22 用語の間違いなど文言を一部修正
同じくウェブカツで学んでいる者です。
とても参考になりました。ありがとうございます。
参考にしていただきありがとうございます!疑問点や解決法、お互いどんどん発信していきましょう^ ^