【MySQL】テーブル作成時にidにAUTO_INCREMENTを指定するとエラーが出る時の対処法

mysql エンジニア
記事内に広告が含まれています。

MySQLでテーブル作成時にAUTO_INCREMENTの部分で下記のエラーが出ました。

mysql> CREATE TABLE `user` (`id` int(10) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL);
ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key

このエラーの対処法をご紹介します。

AUTO_INCREMENTのエラー対処法

PRIMARY_KEY(主キー)を設定する

MySQLでauto_incrementを付与する場合は、

そのカラムを「PRIMARY_KEY(主キー)にしてインデックスを付ける」必要があります。

主キーなしのエラーが出るSQLがこちらです。

CREATE TABLE `user` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL
);

 

主キーを付与した、修正後のSQLがこちらです。

「PRIMARY KEY(id)」を追加しています。

CREATE TABLE `user` (
  `id` int(10) NOT NULL AUTO_INCREMENT, PRIMARY KEY(id),
  `name` varchar(255) NOT NULL
);

追加されたuserテーブルを確認すると、idにauto_incrementが付与されています。

mysql_auto_increment_1

 

AUTO_INCREMENTの動作確認

試しにidを指定せずに2件レコードを追加してみます。

mysql> INSERT INTO user (name) VALUES ('name');
Query OK, 1 row affected (0.01 sec)

mysql> INSERT INTO user (name) VALUES ('name');
Query OK, 1 row affected (0.01 sec)

このようにidが自動で付与されていることが確認できます。

mysql_auto_increment_2

 

コメント