1

テーブルがあり、追加しようとしました

`id` int(11) NOT NULL auto_increment,

テーブルに

ERROR 1075: Incorrect table definition; There can only be one auto column and it must be defined as a key

質問は次のとおりです。

  1. キー列を見つける方法
  2. 問題なく変更でき、新しい ID フィールドを追加できますか (オートインクリメント付き)?
4

5 に答える 5

3

テーブルがすでに作成されている場合は、ALTERを使用します。

ALTER TABLE `table` ADD COLUMN `id` INT(11) NOT NULL AUTO_INCREMENT, 
DROP PRIMARY KEY, 
ADD PRIMARY KEY (`id`)

テーブルを作成する場合は、auto_incrementを主キーとして設定する必要があります。

CREATE TABLE IF NOT EXISTS `database`.`table` (
`id`INT(11) NOT NULL AUTO_INCREMENT ,
`a` VARCHAR(45) NULL ,
`b` VARCHAR(255) NULL ,
`c` VARCHAR(45) NULL ,
PRIMARY KEY (`id`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_unicode_ci
于 2011-03-15T22:31:25.880 に答える
0

主キーに符号なし整数を使用する人はいません。そして、ゼロフィルを使用していないのに、オプションの表示幅、つまり int(11) をわざわざ使用するのはなぜですか!!

drop table if exists foo;
create table foo
(
 id int unsigned not null auto_increment primary key,
 ...
)
engine=innodb;
于 2011-03-15T22:34:34.313 に答える
0
`id` int(11) NOT NULL auto_increment primary key,

主キーにする必要があります

于 2011-03-15T22:10:25.327 に答える
0
ALTER TABLE `database`.`table_name` ADD COLUMN `new_column_name` INT NOT NULL AUTO_INCREMENT  AFTER `last_column_name_in_the_table` , CHANGE COLUMN `old_column_name` `old_column_name` INT(11) NOT NULL  

, DROP PRIMARY KEY 

, ADD PRIMARY KEY (`new_column_name`) ;

matthew が提案したように show create table を実行するだけで現在の主キーを見つけることができ、出力で次のようなものを探します。

主キー ( old_column_name)、

また、使用できる場合は、MySQL Workbench もチェックしてください。このような変更は非常に簡単です。

于 2011-03-15T22:11:30.973 に答える