从mysql中的表中删除外键

从mysql中的表中删除外键,mysql,sql,database,foreign-keys,Mysql,Sql,Database,Foreign Keys,我创建了一个外键,但没有为表中的列命名。现在我想删除该列。首先,我尝试删除外键约束,但出现了一个错误 我使用了以下sql命令 错误消息 1091-不能删除“bookedBy”;检查列/键是否存在 我已经确保了专栏的存在。 我尚未命名外键约束。是否可以删除外键约束而不命名它。外键是否有任何默认命名。运行SHOW CREATE TABLE passenger语句 它的输出将显示外键约束以及表中的列。您应该能够找出要从中删除的外键约束的名称 或者,您可以在信息模式数据库中查询表。它也会出现在那里 后续

我创建了一个外键,但没有为表中的列命名。现在我想删除该列。首先,我尝试删除外键约束,但出现了一个错误 我使用了以下sql命令

错误消息

1091-不能删除“bookedBy”;检查列/键是否存在

我已经确保了专栏的存在。 我尚未命名外键约束。是否可以删除外键约束而不命名它。外键是否有任何默认命名。

运行SHOW CREATE TABLE passenger语句

它的输出将显示外键约束以及表中的列。您应该能够找出要从中删除的外键约束的名称

或者,您可以在信息模式数据库中查询表。它也会出现在那里

后续行动

一个可能的信息查询\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'
运行语句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架构数据库有效。问题是关于删除外键,而不是整个表。问题是关于删除外键,而不是整个表。