テーブルがあり、追加しようとしました
`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
質問は次のとおりです。
- キー列を見つける方法
- 問題なく変更でき、新しい ID フィールドを追加できますか (オートインクリメント付き)?
テーブルがあり、追加しようとしました
`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
質問は次のとおりです。
テーブルがすでに作成されている場合は、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
主キーに符号なし整数を使用する人はいません。そして、ゼロフィルを使用していないのに、オプションの表示幅、つまり int(11) をわざわざ使用するのはなぜですか!!
drop table if exists foo;
create table foo
(
id int unsigned not null auto_increment primary key,
...
)
engine=innodb;
`id` int(11) NOT NULL auto_increment primary key,
主キーにする必要があります
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 もチェックしてください。このような変更は非常に簡単です。