如何从同一个表中的主键和外键mysql表中删除主键。

时间:2013-04-11 08:22:49

标签: mysql foreign-keys primary-key foreign-key-relationship primary-key-design

我有两个不同的表,每个表有20k个条目,我错误地将summaryId作为主键和外键在同一个表中,但现在我想删除主键约束,这也是自动增量。当我尝试删除主键语法时,它返回一个错误:

#1025 - 将'。\ tg#sql-a38_7f'重命名为'。\ tg \ rest_web_availability_summary_pm'时出错(错误号码:150)

我尝试了以下查询。

ALTER TABLE 'table_name' DROP PRIMARY KEY

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

3 个答案:

答案 0 :(得分:4)

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

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

重新定义没有auto_increment的列会将其删除

答案 1 :(得分:4)

我遇到了同样的问题,结果是因为它被其他字段引用,所以mysql要求该列是唯一的,所以我首先添加了一个唯一的约束,从此过上幸福的生活:

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

答案 2 :(得分:0)

如上所述,您需要先删除FK。在MySQL上,这样做:

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

ALTER TABLE `table_name` DROP INDEX `id_name_fk`;