无法在mySQL中删除外键

无法在mySQL中删除外键,mysql,sql,foreign-keys,Mysql,Sql,Foreign Keys,这是人与命令之间的一个常见例子。我只是从网上抄下来做测试 CREATE TABLE Persons ( ID int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Age int, PRIMARY KEY (ID) ); CREATE TABLE Orders ( OrderID int NOT NULL, OrderNumber int NOT NUL

这是人与命令之间的一个常见例子。我只是从网上抄下来做测试

CREATE TABLE Persons (
    ID int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int,
    PRIMARY KEY (ID) );

CREATE TABLE Orders (
    OrderID int NOT NULL,
    OrderNumber int NOT NULL,
    PersonID int,
    PRIMARY KEY (OrderID),
    FOREIGN KEY (PersonID) REFERENCES Persons(ID)
);
到目前为止,一切都很成功。但是我怎样才能删除外键PersonID

我试过这个

ALTER TABLE Orders
DROP FOREIGN KEY PersonID;
MySQL说:

1091-不能丢弃“PersonID”;检查列/键是否存在


您需要删除约束和关键点。首先通过执行以下操作找到约束

1) 显示创建表格订单

拾取约束的值。。在本截图“fk_Daydbreakup_时间表”中

2) ALTER TABLE Orders DROP外键>

给你

3) ALTER TABLE Orders DROP key>


希望这能解决您的问题。

使用以下语句确定约束的名称:

SELECT CONSTRAINT_NAME
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE TABLE_NAME = 'Orders'
AND COLUMN_NAME = 'PersonID';
ALTER TABLE
语句中使用
CONSTRAINT\u NAME
的结果。例如:

ALTER TABLE Orders
DROP FOREIGN KEY `myconstraint`;

导出的答案您试图删除的外键名不存在。您需要通过查询找到它。编辑:如果不命名约束,它通常被命名为“table\u name.column\u name”,因此在您的例子中是“Orders.PersonID”。“PersonID”是应用键的字段的名称,但不一定是键本身的名称。正如T Gray所说,如果您不知道密钥的名称,您将不得不查询它可能与Hi重复。这是一个常见问题。请总是用谷歌搜索你的问题/问题/目标的许多清晰、简洁和具体的版本/措辞,有或没有你的特定字符串/名称,并阅读许多答案。将发现的相关关键字添加到搜索中。如果你找不到答案,就发布,使用1个变体搜索作为标签的标题和关键字。请参见文本上方的向下投票箭头鼠标。如果您确实有一个非重复代码问题要发布,请阅读并采取行动。如果外键被命名,这将起作用。对他来说,事实并非如此,所以这部电视剧也无济于事。如果没有名称,约束默认为“table.column”。最好从字典IMO中获取命名的约束。