当前位置: 首页 > 知识库问答 >
问题:

无法删除MySql中的外键列

鲍建业
2023-03-14

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

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语句给出的错误为-无法删除'fk_job_id';检查列/键是否存在(但该列存在)。

第二个Alter语句给出错误,因为-无法删除索引“fk_job_id”:外键约束中需要索引

共有2个答案

闻人宏盛
2023-03-14

在我的情况下(phpmyadmin和MySQL InnoDB)你不能只是做:

alter table table_name drop constraint constraint_name

因为它将root的“拒绝访问”提供给数据库“information_schema”

但我可以去结构标签-

相关主题:如何从我的MySQL表中删除约束?

郜联
2023-03-14

首先删除外键约束,然后删除列

如:

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';
 类似资料:
  • 有这两个类: ddress.java: User.java: 演示应用程序。爪哇: 运行时,如果失败,出现此错误: GenerationTarget遇到异常接受命令:通过JDBC语句执行DDL“更改表user_addresses删除外键FKfm6x520mag23hvgr1oshaut8b”时出错 然而,最终的表格被创建:: : 为什么jdbc不能删除表中的外键?如何让jdbc做到这一点?

  • (警告:我不是MySQL专业人士,我使用工作台代替知道命令,所以我的问题可能很简单) 我试图重命名表(user)中的主键(userID),但MySQL不允许(错误号150)。经过一番挖掘,我似乎必须先删除外键,然后才能重命名主键。 因此,在Workbench中,我转到下一个表(问题)并选择alter table,然后转到外键选项卡。我在左侧窗口中选择唯一的外键(fk\u question\u us

  • 问题内容: 我需要更改现有数据库以添加列。因此,我也想更新UNIQUE字段以包含该新列。我正在尝试删除当前索引,但不断收到错误 问题答案: 您必须删除外键。MySQL中的外键会在表上自动创建索引(该主题上有一个SO问题)。

  • 问题内容: 我有一个表,该表的主键在其他几个表中使用,并且对其他表有几个外键。 问题是,当我尝试删除外键列之一(即locationIDX)时,它给了我一个错误。 “错误1025(HY000):重命名错误” 如何在没有出现此错误的情况下将列删除到上面的分配表中? 问题答案: 正如解释在这里,似乎外键约束必须由被丢弃 的约束名称 ,而不是索引名。语法为:

  • 我正在使用mysql并试图删除外部约束,但我无法删除该密钥。 它的节目, 如何解决这个问题,请帮助我。

  • 问题内容: 我想使用外键来保持完整性并避免使用孤立键(我已经使用过innoDB)。 如何创建在CASCADE上删除的SQL语句? 如果我删除一个类别,那么如何确保它不会删除也与其他类别相关的产品。 数据透视表“ categories_products”在其他两个表之间创建多对多关系。 问题答案: 如果您的级联删除某个产品是因为该产品属于被杀类别的成员,那么它会删除该产品,那么您的外键设置不正确。给