从mysql中的表中删除一个外键

时间:2015-06-03 12:21:43

标签: mysql sql database foreign-keys

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

ALTER TABLE passenger 
DROP FOREIGN KEY bookedBy

错误消息

  

#1091 - 无法预订“#&#39 ;;检查列/密钥是否存在

我确保该栏目存在 我没有命名外键约束。是否可以在不命名的情况下删除外键约束。是否有外键的默认命名。

4 个答案:

答案 0 :(得分:1)

按照这个

  1. 登录phpMyAdmin
  2. 检查DROP所需的字段(我将使用产品)
  3. enter image description here

    1. 然后选择
    2. enter image description here

      1. 取消选中此复选框,然后点击YES
      2. enter image description here

答案 1 :(得分:1)

最快最肮脏的方法是关闭外键检查,放下桌子然后再打开支票

SET FOREIGN_KEY_CHECKS=0;

drop table mytable

SET FOREIGN_KEY_CHECKS=1;

答案 2 :(得分:0)

运行语句 SHOW CREATE TABLE passenger

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

或者,您可以查看information_schema数据库中表的查询。它也会出现在那里。

<强>跟进

information_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'

答案 3 :(得分:0)

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

如何在表格中找到外键

   SELECT
         TABLE_NAME,COLUMN_NAME,CONSTRAINT_NAME,
REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME
    FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
    WHERE
      REFERENCED_TABLE_NAME = '<table>';