从mysql中的表中删除外键
我创建了一个外键,但没有为表中的列命名。现在我想删除该列。首先,我尝试删除外键约束,但出现了一个错误 我使用了以下sql命令 错误消息 1091-不能删除“bookedBy”;检查列/键是否存在 我已经确保了专栏的存在。 我尚未命名外键约束。是否可以删除外键约束而不命名它。外键是否有任何默认命名。运行SHOW CREATE TABLE passenger语句 它的输出将显示外键约束以及表中的列。您应该能够找出要从中删除的外键约束的名称 或者,您可以在信息模式数据库中查询表。它也会出现在那里 后续行动 一个可能的信息查询\u schema,用于查找给定表的外键约束的名称:从mysql中的表中删除外键,mysql,sql,database,foreign-keys,Mysql,Sql,Database,Foreign Keys,我创建了一个外键,但没有为表中的列命名。现在我想删除该列。首先,我尝试删除外键约束,但出现了一个错误 我使用了以下sql命令 错误消息 1091-不能删除“bookedBy”;检查列/键是否存在 我已经确保了专栏的存在。 我尚未命名外键约束。是否可以删除外键约束而不命名它。外键是否有任何默认命名。运行SHOW CREATE TABLE passenger语句 它的输出将显示外键约束以及表中的列。您应该能够找出要从中删除的外键约束的名称 或者,您可以在信息模式数据库中查询表。它也会出现在那里 后续
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'
运行语句showcreatetablepassenger
它的输出将显示外键约束以及表中的列。您应该能够找出要从中删除的外键约束的名称
或者,您可以在信息模式数据库中查询表。它也会出现在那里
后续行动
一个可能的信息查询\u schema,用于查找给定表的外键约束的名称:
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'
也可以像这样添加外键
ALTER TABLE Orders
ADD FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
删除
ALTER TABLE Orders
DROP FOREIGN KEY fk_PerOrders
如何在我的表中查找外键
SELECT
TABLE_NAME,COLUMN_NAME,CONSTRAINT_NAME,
REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE
REFERENCED_TABLE_NAME = '<table>';
也可以像这样添加外键
ALTER TABLE Orders
ADD FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
删除
ALTER TABLE Orders
DROP FOREIGN KEY fk_PerOrders
如何在我的表中查找外键
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
检查您需要删除的字段我将使用该产品
然后选择
取消选中此复选框,然后单击“是”
照此
登录到phpMyAdmin
检查您需要删除的字段我将使用该产品
然后选择
取消选中此复选框,然后单击“是”
最快和最脏的方法是关闭外键检查,放下表,然后重新打开检查
SET FOREIGN_KEY_CHECKS=0;
drop table mytable
SET FOREIGN_KEY_CHECKS=1;
最快和最脏的方法是关闭外键检查,放下表,然后重新打开检查
SET FOREIGN_KEY_CHECKS=0;
drop table mytable
SET FOREIGN_KEY_CHECKS=1;
可能会改变表的drop列级联?是否使用PhpMyAdmin?在那里,您可以使用UI访问键表拖放列级联?是否使用PhpMyAdmin?在那里,您可以使用UI访问键yeah查询信息\u架构数据库有效。yeah查询信息\u架构数据库有效。问题是关于删除外键,而不是整个表。问题是关于删除外键,而不是整个表。