我有两个不同的表,每个表有20k个条目,我错误地将summaryId作为主键和外键在同一个表中,但现在我想删除主键约束,这也是自动增量。当我尝试删除主键语法时,它返回一个错误:
#1025 - 将'。\ tg#sql-a38_7f'重命名为'。\ tg \ rest_web_availability_summary_pm'时出错(错误号码:150)
我尝试了以下查询。
ALTER TABLE 'table_name' DROP PRIMARY KEY
如果有人有任何想法,请告诉我如何删除主键。
答案 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`;