Mysql drop主键不起作用

时间:2016-10-27 13:45:09

标签: mysql

这是我的表:

+-------------+--------------+------+-----+---------+----------------+
| Field       | Type         | Null | Key | Default | Extra          |
+-------------+--------------+------+-----+---------+----------------+
| id          | bigint(20)   | NO   | PRI | NULL    | auto_increment |
| template_id | int(11)      | NO   | MUL | NULL    |                |
| type        | smallint(6)  | NO   |     | 2       |                |
| width       | varchar(100) | NO   |     |         |                |
| height      | varchar(100) | NO   |     |         |                |
+-------------+--------------+------+-----+---------+----------------+

从表中可以看出,idtemplate_id是主键,id具有auto_increment设置。

我想要做的是删除tempalte_id主键属性。

这是我试过的mysql查询字符串:

ALTER TABLE ts_template_size
DROP PRIMARY KEY,
ADD PRIMARY KEY (`id`);

查询可以成功执行,但似乎没有任何改变。没有警告,没有错误,tempalte_id的主键属性仍然存在

那我怎么解决这个问题呢?我的查询有什么问题?

2 个答案:

答案 0 :(得分:1)

改变自动增量

ALTER TABLE ts_template_size MODIFY id INT NULL;

放弃

ALTER TABLE ts_template_size
DROP PRIMARY KEY;

重新创建它:

ALTER TABLE yourtable
ADD PRIMARY KEY (`id`);

答案 1 :(得分:1)

“我的查询有什么问题?”

您的查询 删除表中的主键id,然后立即重新添加。没有错误消息,因为查询有效。

问题是template_id不是表格中的主键。这应该有效:

ALTER TABLE ts_template_size drop index `template_id`;

您的id主键将保留,如您所愿。

有关MUL索引标识的更多信息,请参阅此答案(这是template_id在您的表中): https://stackoverflow.com/a/15268888/1250190