![](/img/trans.png)
[英]How to remove primary key from a mysql table which is primary key and foreign key in the same table as well.?
[英]Trying to remove a primary key from MySQL table
编辑:不确定为什么将其标记为重复项。 我得到的错误是不同的
我试图删除主键定义,但由于某种原因收到错误。
mysql> ALTER TABLE `aux_sponsors` DROP PRIMARY KEY;
ERROR 1091 (42000): Can't DROP 'PRIMARY'; check that column/key exists
mysql> desc aux_sponsors;
+-------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+-------+
| unit | varchar(8) | NO | | MF | |
| code | varchar(32) | NO | PRI | NULL | |
| userid | varchar(32) | NO | | | |
| fullName | varchar(64) | NO | | | |
| department | varchar(255) | NO | | | |
| description | varchar(255) | NO | | NULL | |
+-------------+--------------+------+-----+---------+-------+
6 rows in set (0.01 sec)
我在这里做错什么了吗? 我只希望该表中不再有主键。
mysql> SHOW CREATE TABLE aux_sponsors;
+--------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+--------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| aux_sponsors | CREATE TABLE `aux_sponsors` (
`unit` varchar(8) NOT NULL DEFAULT 'MF',
`code` varchar(32) NOT NULL,
`userid` varchar(32) NOT NULL DEFAULT '',
`fullName` varchar(64) NOT NULL DEFAULT '',
`department` varchar(255) NOT NULL DEFAULT '',
`description` varchar(255) NOT NULL,
UNIQUE KEY `code` (`code`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 |
+--------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
您没有PRIMARY KEY
; 您有一个UNIQUE
键。 因此,您不能执行以下操作:
ALTER TABLE `aux_sponsors` DROP PRIMARY KEY
相反,只要做
ALTER TABLE `aux_sponsors` DROP KEY `code`
DESC
(a / k / a DESCRIBE
)不是真正的MySQL功能; 根据文档,“提供DESCRIBE语句是为了与Oracle兼容。”
如果UNIQUE索引不能包含NULL值并且表中没有PRIMARY KEY,则可能显示为PRI。 如果几列构成一个复合UNIQUE索引,则UNIQUE索引可能显示为MUL;否则,可能会显示为MUL。 尽管各列的组合是唯一的,但各列仍可以容纳多次出现的给定值。
在您的情况下,列code
NOT NULL
并且是UNIQUE
键中的唯一列,因此DESC
将其显示为PRI
。 由于这种类型的问题,最好使用SHOW INDEX
找出表上键的类型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.