MySQLWorkbenchでエクスポートしたSQLがIncorrect table definitionエラーになったときの対処法

 · 3 min read

こんにちは。
今日、MySQLWorkbenchというMySQL純正ツールを使ってDDLを作っていたのですが、

GUIでテーブルを設定し、SQLにエクスポートしたら

Incorrect table definition; there can be only one auto column and it must be defined as a key

というエラーが出たのでその対処法を残します。

なぜエラーが起こるのか(SQLのお作法)

まずエラーの意味を理解します。

Incorrect table definition; there can be only one auto column and it must be defined as a key

とは、AUTO INCREMENTが設定されたカラムは主キーでなければならない
と言っています。

しかし、AUTO INCREMENTを設定したカラムは主キーにしてあります。

AUT

ではなぜエラーが起こるのでしょう。

なぜエラーが起こるのか(ツールのバグ? )

こちらのページに引っかかる記述がありました。

主キーの設定をしていない場合は、主キーの設定をしてからAUTO_INCREMENT属性を設定する必要があります。
主キーの設定・削除、AUTO_ICREMENT属性の設定|カラム(フィールド):データ定義(SQL文)|MySQL|PHP & JavaScript Room

どうやら、主キーの設定がされる前に、AUTO INCREMENTの指定がされてしまっているようです。

そんなこと言われましても…。
吐き出されたSQLをいちいち手動で修正しなければならないのかと思いましたが、直せました

対処法

上記のエラーが起こる原因は、カラムの属性を選ぶ”順番”が左右していたようです。

つまり、チェックボックスのAI属性に先にチェックを入れてしまっていて、
そのあとにPKの指定をしたため、アウト。

そんな馬鹿な。。。

GUIからチェックボックスを選んだ順番なんてまともに見る術も無いのに、
あまりに不親切すぎませんか…

ということでチェックを解除してPK>AIの順番でチェックを入れなおしたら治りました。

チェックを入れなおし

MySQL
© 2012-2021 Leko