3

我有两个不同的表,每个有20K条目,我错误地做了summaryId作为主键和外键在同一个表中,但现在我想删除自动增加的主键约束。当我尝试删除主键语法返回我一个错误:如何从主表键和外键在同一个表中删除主键。

#1025 - 错误上的 '\ TG#SQL-a38_7f' 重命名 '\ TG \ rest_web_availability_summary_pm'(错误:150)

我试过了下面的查询。

ALTER TABLE 'table_name' DROP PRIMARY KEY 

如果有人有任何想法,请告诉我如何删除主键。

+0

您使用什么命令删除主键? – agim 2013-04-11 08:26:29

+0

ALTER TABLE'table_name'DROP PRIMARY KEY – 2013-04-11 08:28:10

回答

4

问题是,您的字段是auto_increment。你应该先删除AUTO_INCREMENT然后删除主键..所以试试这个:

ALTER TABLE `mytable` CHANGE COLUMN `id` `id` INT(11) NOT NULL, DROP PRIMARY KEY; 

没有AUTO_INCREMENT重新定义列删除它

+0

我试过ALTER TABLE'table_name'DROP PRIMARY KEY ALTER TABLE'table_name'DROP PRIMARY KEY'column_name' ALTER TABLE'table_name'DROP PRIMARY KEY'column_name',ADD PRIMARY KEY(列2); 但上述命令都无法帮助我。 – 2013-04-11 08:30:42

+0

@AdeshPandey首先从字段中删除'auto_increment'标志。上述声明应该起作用。 – agim 2013-04-11 08:40:25

+0

我已经删除了自动增加标志 – 2013-04-11 08:48:32

4

我有同样的问题,原来,它是由其他引用场中,MySQL所需的列是唯一的,所以我第一次加入了独特的约束和幸福快乐有史以来:

alter table `mytable` add unique key `key` (`fieldname`); 
alter table `mytable` drop primary key; -- which is fieldname... 
0

如前所述,您需要之前删除FK秒。在MySQL上,请这样做:

ALTER TABLE `table_name` DROP FOREIGN KEY `id_name_fk`; 

ALTER TABLE `table_name` DROP INDEX `id_name_fk`;