必须先移除AUTO_INCREMENT属性,再执行DROP PRIMARY KEY;否则MySQL报错1075,因自增列必须依附主键,不可单独存在。

直接删主键会失败,不是操作按钮没点对,而是 MySQL 层面有硬性限制:如果主键列同时是 AUTO_INCREMENT,你必须先去掉自增属性,才能执行 DROP PRIMARY KEY。
为什么点“删除约束”会报错 [1075]?
常见错误信息:SQL 错误 [1075] [42000]: Incorrect table definition; there can be only one auto column and it must be defined as a key。这说明该主键字段被设为 AUTO_INCREMENT,而 MySQL 不允许存在一个非主键的自增列——但反过来,它也不允许在保留自增的前提下删主键。
- 不是 DBeaver 的 bug,是 MySQL 5.7+ 的强制校验逻辑
- 即使你在 DBeaver 的“约束”页右击删了主键、点了保存,最终生成的 SQL 若没前置处理自增,执行仍会中断
- 外键依赖也会拦住删除,但 [1075] 错误一定先指向自增问题
用 DBeaver 图形界面安全删除主键的步骤
关键在于顺序:先解除自增 → 再删主键约束 → 最后保存执行。不能跳步。
- 右键表 → “编辑表” → 切到“属性”标签页
- 找到主键列(通常是
id),把它的AUTO_INCREMENT勾选取消(或把“标识”/“自增”开关关掉) - 切到“约束”标签页 → 找到类型为
PRIMARY KEY的约束 → 右击 → “删除” - 点右下角“保存” → 在弹出的 SQL 执行窗口确认语句类似:
ALTER TABLE `your_table` MODIFY `id` INT NOT NULL;<br>ALTER TABLE `your_table` DROP PRIMARY KEY;
→ 点“执行”
手动写 SQL 删除更可控(推荐给熟悉 MySQL 的人)
图形界面容易漏掉自增修改,直接发命令反而清晰。注意两步缺一不可:
- 先移除自增:
ALTER TABLE your_table MODIFY id INT NOT NULL;(类型按实际改,比如BIGINT) - 再删主键:
ALTER TABLE your_table DROP PRIMARY KEY; - 如果表里还有外键引用这个主键,得先查并删外键:
SELECT CONSTRAINT_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE REFERENCED_TABLE_NAME = 'your_table';
真正卡住人的从来不是“找不到删除按钮”,而是删完主键后发现字段还挂着自增、或者外键没清理干净导致后续加主键失败。每次操作前,用 SHOW CREATE TABLE your_table; 看一眼当前定义,比盲目点保存靠谱得多。











