繁体   English   中英

尝试从MySQL表中删除主键

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM