4

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

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

我尝试了以下查询。

ALTER TABLE 'table_name' DROP PRIMARY KEY

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

4

3 回答 3

5

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

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

重新定义不带 auto_increment 的列将其删除

于 2013-04-11T08:26:08.190 回答
4

我也遇到了同样的问题,原来是被其他字段引用了,mysql要求列是唯一的,所以我先加了一个唯一的约束,从此过上了幸福的生活:

alter table `mytable` add unique key `key` (`fieldname`);
alter table `mytable` drop primary key; -- which is fieldname...
于 2014-12-04T00:55:42.080 回答
0

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

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

ALTER TABLE `table_name` DROP INDEX `id_name_fk`;
于 2016-09-22T17:19:53.417 回答