7

SQL クエリ:

ALTER TABLE  `blog` CHANGE  `id`  `id` BIGINT NOT NULL AUTO_INCREMENT

MySQL は次のように述べています。

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

ブログを作成しようとしていますが、コードを完成させました。idここで、自動増加を行う必要がありますが、このエラーが発生します。なぜ私はこれを手に入れたのですか?

4

3 に答える 3

11

列に一意のインデックスが定義されていないため、MySQL はそのエラーを返します (ほとんどの場合) id。(MySQL では一意のインデックスが必要です。もう 1 つの可能性は、テーブル内に AUTO_INCREMENT として定義された列が 1 つしか存在しないことです)。

その列を AUTO_INCREMENT にするために、列に UNIQUE 制約または PRIMARY KEY 制約を追加できidます。例えば:

ALTER TABLE `blog` ADD CONSTRAINT `blog_ux` UNIQUE (`id`) ;

(id 列に重複する値が存在する場合、このステートメントはエラーを返すことに注意してください。)

または、id 列をテーブルの PRIMARY KEY にすることもできます (テーブルに PRIMARY KEY 制約が定義されていない場合)。

ALTER TABLE `blog` ADD PRIMARY KEY (`id`) ;

(このステートメントは、id 列に重複する値が存在する場合、またはその列に NULL 値が格納されている場合、またはテーブルにすでに PRIMARY KEY 制約が定義されている場合にエラーを返すことに注意してください。)

于 2012-12-19T23:42:21.567 に答える
7

MySQL では、自動インクリメント列をテーブルの主キーにする必要があります。primary key最後に制約を追加します

ALTER TABLE  `blog` MODIFY COLUMN `id` BIGINT NOT NULL AUTO_INCREMENT primary key
于 2012-12-19T23:39:14.820 に答える