You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL命令行如何删除复合主键中的指定索引列

命令行实现方法

你在SHOW INDEXES结果里看到的两条Key_name为PRIMARY的记录,本质是同一个复合主键索引包含的两个字段,不是两个独立的同名索引。MySQL本身不支持直接删除复合主键中的单个列,不管是phpMyAdmin还是命令行,底层都是通过「删除旧的复合主键→新建仅包含目标字段的主键」实现的,具体操作步骤如下:

  • 操作前先检查:如果存在其他表通过外键关联了当前表的这个复合主键,先临时关闭外键约束校验,避免操作报错:
SET FOREIGN_KEY_CHECKS = 0;
  • 先删除现有的复合主键,主键索引用固定语法删除即可:
ALTER TABLE sous_categories DROP PRIMARY KEY;

注意:MySQL要求主键列必须满足非空约束,如果你的id_sous_categorie列建表时没加NOT NULL属性,执行删主键操作后、建新主键前,要先给这个列补非空约束,比如该列是INT类型就执行:
ALTER TABLE sous_categories MODIFY COLUMN id_sous_categorie INT NOT NULL;

  • 新建仅包含id_sous_categorie字段的主键:
ALTER TABLE sous_categories ADD PRIMARY KEY (id_sous_categorie);
  • 如果你最开始关闭了外键检查,操作完成后记得重新开启:
SET FOREIGN_KEY_CHECKS = 1;

操作完成后重新执行SHOW INDEXES from sous_categories;,就能看到主键索引下只剩id_sous_categorie一个字段,已经移除了categorie_id列。

内容的提问来源于stack exchange,提问作者E Epsylon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 23:18:18