【问题标题】:Unable to drop a foreign key column in MySql无法在 MySql 中删除外键列
【发布时间】:2018-08-21 08:28:47
【问题描述】:

我在表格中添加了一列(下面的查询)

ALTER TABLE `acct_doc_item_data`
ADD fk_job_id INT(11), 
ADD FOREIGN KEY (fk_job_id) REFERENCES `job`(`job_id`);

现在我想删除此列 (fk_job_id)。我尝试了这些查询,但它们给出了错误。

ALTER TABLE `acct_doc_item_data` DROP FOREIGN KEY `fk_job_id`;
ALTER TABLE `acct_doc_item_data` DROP COLUMN `fk_job_id`;

第一个 Alter 语句给出错误为 - Can't DROP 'fk_job_id'; check that column/key exists(但该列存在)。

第二条 Alter 语句给出的错误为 - Cannot drop index 'fk_job_id': needed in a foreign key constraint

【问题讨论】:

  • 需要删除索引的名称ALTER TABLE acct_doc_item_data DROP FOREIGN KEY <foreign key index/constraint>;,删除外键时不能使用列名,只能删除列时使用。
  • 你添加外键时没有提供外键名称,如果内存服务mysql会分配一个给你尝试stackoverflow.com/questions/201621/…识别名称。

标签: mysql


【解决方案1】:

先删除外键约束再删除列

例如:

alter table table_name drop constraint constraint_name


alter table table_name drop column column_name

要获取约束名称,请使用此

SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE TABLE_NAME='YourTableName';

【讨论】:

    【解决方案2】:

    在我的情况下(phpmyadmin 和 Mysql InnoDB)你不能这样做:

    alter table table_name drop constraint constraint_name
    

    因为它为根“到数据库'information_schema'”提供了“访问被拒绝”

    但我可以转到结构选项卡 -> 关系视图,然后您可以从那里删除所需的 fk

    相关话题:How to remove constraints from my MySQL table?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-16
      • 1970-01-01
      • 1970-01-01
      • 2015-02-22
      相关资源
      最近更新 更多