我在mysql中有这样一个表(这是使用show create table user\u org\u contacts返回的):
CREATE TABLE `user_org_contacts` (
`user_org_contacts_id` int(11) NOT NULL AUTO_INCREMENT,
`from_user_id` int(11) DEFAULT NULL,
`to_org_user_id` int(11) DEFAULT NULL,
`suggested_vacancy_id` int(11) DEFAULT NULL,
`contact_date` datetime NOT NULL,
`message` text,
PRIMARY KEY (`user_org_contacts_id`),
KEY `FK_Reference_53` (`from_user_id`),
KEY `FK_Reference_54` (`to_org_user_id`),
KEY `FK_Reference_55` (`suggested_vacancy_id`)
) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=latin1
我注意到我的fk\u参考号是错误的,指向了错误的表。所以我想用正确的fk来改变这个。
这就是我所尝试的:
ALTER TABLE `user_org_contacts`
DROP FOREIGN KEY `FK_Reference_54`;
ALTER TABLE `user_org_contacts`
ADD CONSTRAINT `FK_Reference_54`
FOREIGN KEY (`to_org_user_id`) REFERENCES `users` (`user_id`) ON DELETE CASCADE;
这将产生以下错误:
2条答案
按热度按时间jljoyd4f1#
问题是你把索引和主键混淆了。
关键字键实际上是显示索引,而主键使用关键字约束。。。外键。。。
例子:
因此,在您的例子中,如果您想删除索引,您只需要调用这个查询
下一次,我建议您使用mysql工作台之类的ui,这样您会立即注意到这个问题。
nkhmeac62#
首先尝试删除列alter table tablename drop column columname;然后:alter table tablename add columnname datatype。
或者你也可以像这样尝试这个修改选项。alter table tablename修改column columnname数据类型;
希望这对你有帮助。