从 table 中删除外键 mysql
Drop a foreign key from a table in mysql
我创建了一个外键,但没有为 table 中的列指定名称。现在我想删除该列。首先,我尝试删除外键约束,但出现错误
我使用了以下 sql 命令
ALTER TABLE passenger
DROP FOREIGN KEY bookedBy
错误信息
#1091 - Can't DROP 'bookedBy'; check that column/key exists
我已确保该列存在。
我没有命名外键约束。是否可以在不命名的情况下删除外键约束。外键是否有任何默认命名。
运行 语句 SHOW CREATE TABLE passenger
。
输出将显示外键约束,以及 table 中的列。您应该能够找出要从中删除的外键约束的名称。
或者,您可以处理 information_schema
数据库中 table 的查询。它也会出现在那里。
跟进
information_schema
的一个可能查询,用于查找给定 table 的外键约束的名称:
SELECT kcu.constraint_schema
, kcu.constraint_name
-- , kcu.*
FROM information_schema.key_column_usage kcu
WHERE kcu.referenced_table_name IS NOT NULL
AND kcu.constraint_schema = 'mydatabase'
AND kcu.table_name = 'mytablename'
CREATE TABLE Orders
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
PRIMARY KEY (O_Id),
FOREIGN KEY (P_Id) REFERENCES Persons(P_Id)
)
你也可以像这样添加外键
ALTER TABLE Orders
ADD FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
并删除
ALTER TABLE Orders
DROP FOREIGN KEY fk_PerOrders
如何在我的 table
中查找外键
SELECT
TABLE_NAME,COLUMN_NAME,CONSTRAINT_NAME,
REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE
REFERENCED_TABLE_NAME = '<table>';
关注这个
- 登录到 phpMyAdmin
- 检查您需要哪个字段
DROP
(例如我将使用产品)
- 然后 Select
- 取消选中此复选框并单击
YES
最快和最肮脏的方法是关闭外键检查,删除 table 然后重新打开检查
SET FOREIGN_KEY_CHECKS=0;
drop table mytable
SET FOREIGN_KEY_CHECKS=1;
我创建了一个外键,但没有为 table 中的列指定名称。现在我想删除该列。首先,我尝试删除外键约束,但出现错误
我使用了以下 sql 命令
ALTER TABLE passenger
DROP FOREIGN KEY bookedBy
错误信息
#1091 - Can't DROP 'bookedBy'; check that column/key exists
我已确保该列存在。
我没有命名外键约束。是否可以在不命名的情况下删除外键约束。外键是否有任何默认命名。
运行 语句 SHOW CREATE TABLE passenger
。
输出将显示外键约束,以及 table 中的列。您应该能够找出要从中删除的外键约束的名称。
或者,您可以处理 information_schema
数据库中 table 的查询。它也会出现在那里。
跟进
information_schema
的一个可能查询,用于查找给定 table 的外键约束的名称:
SELECT kcu.constraint_schema
, kcu.constraint_name
-- , kcu.*
FROM information_schema.key_column_usage kcu
WHERE kcu.referenced_table_name IS NOT NULL
AND kcu.constraint_schema = 'mydatabase'
AND kcu.table_name = 'mytablename'
CREATE TABLE Orders
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
PRIMARY KEY (O_Id),
FOREIGN KEY (P_Id) REFERENCES Persons(P_Id)
)
你也可以像这样添加外键
ALTER TABLE Orders
ADD FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
并删除
ALTER TABLE Orders
DROP FOREIGN KEY fk_PerOrders
如何在我的 table
中查找外键 SELECT
TABLE_NAME,COLUMN_NAME,CONSTRAINT_NAME,
REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE
REFERENCED_TABLE_NAME = '<table>';
关注这个
- 登录到 phpMyAdmin
- 检查您需要哪个字段
DROP
(例如我将使用产品)
- 然后 Select
- 取消选中此复选框并单击
YES
最快和最肮脏的方法是关闭外键检查,删除 table 然后重新打开检查
SET FOREIGN_KEY_CHECKS=0;
drop table mytable
SET FOREIGN_KEY_CHECKS=1;