プログラミング

#1075 – 不正な表定義です。AUTO_INCREMENT列は1個までで、索引を定義する必要があります。 というエラーへの対処法 | phpMyAdmin

データベースをいじっていたら「#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

エラーへの対処法

  1. idカラムでインデックスのプルダウンから — を選択
  2. idカラムでインデックスのプルダウンから PRIMARY を選択
  3. 「インデックスを追加する」のダイアログが出たら「実行」をクリック
  4. テーブルを保存する

要するに、いったんインデックスを — にしてから、再度 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 用語の間違いなど文言を一部修正

関連記事

  1. プログラミング

    VSCodeで “Git not found. Install it or config…

    またはVSCodeを起動したらGitが見つからないと言われる→Gitの…

  2. プログラミング

    PHP7技術者認定初級試験の問題集より:strcasecmp() の関数を検証

    一般社団法人BOSS-CON JAPAN / PHP技術者認定機構 さ…

  3. プログラミング

    fatal: Authentication failed for … Sourcetre…

    少し前のことですが、BacklogのGitを使用して、Sourcetr…

コメント

    • 新人
    • 2019年 4月 29日

    同じくウェブカツで学んでいる者です。
    とても参考になりました。ありがとうございます。

      • nekonoblog
      • 2019年 4月 30日

      参考にしていただきありがとうございます!疑問点や解決法、お互いどんどん発信していきましょう^ ^

  1. この記事へのトラックバックはありません。

最近の記事

  1. 猫の話

    かぎしっぽの話
  2. 猫の話

    ニャーさんという猫の話
  3. プログラミング

    #1075 – 不正な表定義です。AUTO_INCREMENT列は1個までで、索…
  4. プログラミング

    PHP7技術者認定初級試験の問題集より:strcasecmp() の関数を検証
  5. Mac

    虫メガネツールなしで画面を拡大表示する方法
PAGE TOP