这是我的表:
+-------------+--------------+------+-----+---------+----------------+
| 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 | | | |
+-------------+--------------+------+-----+---------+----------------+
从表中可以看出,id
和template_id
是主键,id
具有auto_increment设置。
我想要做的是删除tempalte_id
主键属性。
这是我试过的mysql查询字符串:
ALTER TABLE ts_template_size
DROP PRIMARY KEY,
ADD PRIMARY KEY (`id`);
查询可以成功执行,但似乎没有任何改变。没有警告,没有错误,tempalte_id
的主键属性仍然存在
那我怎么解决这个问题呢?我的查询有什么问题?
答案 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