我想从表中移除约束条件。我的问题是:
ALTER TABLE `tbl_magazine_issue`
DROP CONSTRAINT `FK_tbl_magazine_issue_mst_users`
但是我得到了一个错误:
#1064 -你的SQL语法错误;请查看MySQL服务器版本对应的手册,在第一行使用“constraint FK_tbl_magazine_issue_mst_users”附近的正确语法
我想从表中移除约束条件。我的问题是:
ALTER TABLE `tbl_magazine_issue`
DROP CONSTRAINT `FK_tbl_magazine_issue_mst_users`
但是我得到了一个错误:
#1064 -你的SQL语法错误;请查看MySQL服务器版本对应的手册,在第一行使用“constraint FK_tbl_magazine_issue_mst_users”附近的正确语法
当前回答
一些ORM或框架使用不同于默认FK_[父表]_[引用表]_[引用字段]的外键命名约定,因为它们可以被更改。
例如,Laravel使用[父表]_[引用字段]_foreign作为命名约定。你可以使用这个查询来显示外键的名称,如下所示:
SELECT CONSTRAINT_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE REFERENCED_TABLE_SCHEMA = '<database>' AND REFERENCED_TABLE_NAME = '<table>';
然后通过运行前面提到的DROP foreign key查询及其正确名称来删除外键。
其他回答
Mysql有一个特殊的语法来删除外键约束:
ALTER TABLE tbl_magazine_issue
DROP FOREIGN KEY FK_tbl_magazine_issue_mst_users
一些ORM或框架使用不同于默认FK_[父表]_[引用表]_[引用字段]的外键命名约定,因为它们可以被更改。
例如,Laravel使用[父表]_[引用字段]_foreign作为命名约定。你可以使用这个查询来显示外键的名称,如下所示:
SELECT CONSTRAINT_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE REFERENCED_TABLE_SCHEMA = '<database>' AND REFERENCED_TABLE_NAME = '<table>';
然后通过运行前面提到的DROP foreign key查询及其正确名称来删除外键。
在MySQL中没有DROP约束。在你的情况下,你可以使用DROP外键代替。
我也遇到过同样的问题,我用下面的代码来解决:
ALTER TABLE `table_name` DROP FOREIGN KEY `id_name_fk`;
ALTER TABLE `table_name` DROP INDEX `id_name_fk`;
进入表的结构视图 您将在顶部a.表结构b.关系视图中看到2个选项。 现在单击关系视图,在这里可以删除外键约束。在这里你会得到所有的关系。