如何删除从我的MySQL表的约束?(How to remove constraints from m

2019-07-17 18:32发布

我想从我的表中删除约束。 我的查询是:

ALTER TABLE `tbl_magazine_issue` 
DROP CONSTRAINT `FK_tbl_magazine_issue_mst_users`

但是,我得到了一个错误:

#1064 -你在你的SQL语法错误; 检查对应于你的MySQL服务器版本使用附近的“约束正确的语法手册FK_tbl_magazine_issue_mst_users第1行”

Answer 1:

MySQL已经为下降外键约束的特殊语法:

ALTER TABLE tbl_magazine_issue
  DROP FOREIGN KEY FK_tbl_magazine_issue_mst_users


Answer 2:

我有同样的问题,我得到这个代码来解决:

ALTER TABLE `table_name` DROP FOREIGN KEY `id_name_fk`;
ALTER TABLE `table_name` DROP INDEX  `id_name_fk`;


Answer 3:

目前是没有这样的事情DROP CONSTRAINT在MySQL。 你的情况,你可以使用DROP FOREIGN KEY来代替。



Answer 4:

如果约束是不是外键,例如。 一个使用“唯一约束(可乐,COLB)”加入那么可以使用被丢弃的索引ALTER TABLE ... DROP INDEX ...



Answer 5:

此外真好,可以暂时禁用从MySQL数据库中的所有外键检查: SET FOREIGN_KEY_CHECKS=0; 并再次启用它: SET FOREIGN_KEY_CHECKS=1;



Answer 6:

为了一点点添加到罗伯特骑士的答案,因为文章的标题本身并没有提及外键(和,因为他不具备完整的代码样本,因为SO的评论代码块不显示以及答案代码块),我唯一约束添加此。 无论这些工作要删除约束:

ALTER TABLE `table_name` DROP KEY `uc_name`;

要么

ALTER TABLE `table_name` DROP INDEX `uc_name`;


Answer 7:

一些ORM的框架或使用不同的命名约定外键不是默认FK_[parent table]_[referenced table]_[referencing field] ,因为它们可以改变。

Laravel例如使用[parent table]_[referencing field]_foreign作为命名约定。 您可以使用此查询显示外键的名称,如图所示在这里 :

SELECT CONSTRAINT_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE 
WHERE REFERENCED_TABLE_SCHEMA = '<database>' AND REFERENCED_TABLE_NAME = '<table>';

然后取出运行之前提到的DROP FOREIGN KEY查询及其正确的名称外键。



Answer 8:

  1. 转到结构视图表
  2. 你会看到在顶部a.Table结构B 2选项。 关系图
  3. 现在点击关系视图 ,在这里你可以将你的外键约束。 在这里你会得到所有的关系。


Answer 9:

对于那些来到这里使用MariaDB的:

需要注意的是MariaDB的允许一般DROP CONSTRAINT语句,例如用于丢弃检查约束:

ALTER TABLE table_name
DROP CONSTRAINT constraint_name;

https://mariadb.com/kb/en/library/alter-table/



Answer 10:

这将适用于MySQL的下降限制

alter table tablename drop primary key;

alter table tablename drop foreign key;


文章来源: How to remove constraints from my MySQL table?