MySQL删除表

MySQL删除表,mysql,foreign-keys,sql-drop,Mysql,Foreign Keys,Sql Drop,我想删除一个带有drop table EMPLOYEE的表 但我得到了一个错误:#1217-无法删除或更新父行:外键约束失败 我在互联网上四处查看以显示隐藏的约束,发现: CREATE TABLE `EMPLOYEE` ( `Ssn` int(9) NOT NULL, `Dno` int(11) NOT NULL, UNIQUE KEY`Ssn_8` (`Ssn`), UNIQUE KEY`Dno_13` (`Dno`), CONSTRAINT `EMPLOYEE_ibfk_1` FOREIGN

我想删除一个带有
drop table EMPLOYEE的表

但我得到了一个错误:
#1217-无法删除或更新父行:外键约束失败

我在互联网上四处查看以显示隐藏的约束,发现:

CREATE TABLE `EMPLOYEE` (
`Ssn` int(9) NOT NULL,
`Dno` int(11) NOT NULL,
UNIQUE KEY`Ssn_8` (`Ssn`),
UNIQUE KEY`Dno_13` (`Dno`),
CONSTRAINT `EMPLOYEE_ibfk_1` FOREIGN KEY(`Dno`) REFERENCES `DEPARTMENT` (`Dnumber`),
CONSTRAINT `EMPLOYEE_ibfk_2` FOREIGN KEY(`Dno`) REFERENCES `DEPARTMENT` (`Dnumber`),
CONSTRAINT `EMPLOYEE_ibfk_3` FOREIGN KEY(`Dno`) REFERENCES `EMPLOYEE` (`Dno`),
CONSTRAINT `EMPLOYEE_ibfk_4` FOREIGN KEY(`Dno`) REFERENCES `EMPLOYEE` (`Dno`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1




   CREATE TABLE `DEPARTMENT` (
`Dnumber` int(11) NOT NULL,
`Mgr_ssn` int(9) NOT NULL,
UNIQUE KEY`Mgr_ssn` (`Mgr_ssn`),
UNIQUE KEY`Dnumber` (`Dnumber`),
CONSTRAINT `DEPARTMENT_ibfk_1` FOREIGN KEY(`Mgr_ssn`) REFERENCES `EMPLOYEE` (`Ssn`),
CONSTRAINT `DEPARTMENT_ibfk_2` FOREIGN KEY(`Mgr_ssn`) REFERENCES `EMPLOYEE` (`Ssn`),
CONSTRAINT `DEPARTMENT_ibfk_3` FOREIGN KEY(`Mgr_ssn`) REFERENCES `DEPARTMENT` (`Mgr_ssn`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
找到这个后,我试着先用以下方法去除违禁品:
alter table EMPLOYEE drop containt'EMPLOYEE_ibfk_1'

但我一直得到:
#1064-您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解第1行“EMPLOYEE_ibfk_1”附近使用的正确语法


我已经花了几个小时的时间放下这张桌子,在互联网上搜索了很多话题。人们最终删除了数据库,但我无权删除数据库或创建数据库

您需要从Department中删除表Employee中的外键以及表Employee的外键,然后尝试删除它

注意:需要删除部门表中首先引用的表的外键


另外,请先删除Department表中从Department到Employee的所有引用。

外键名称需要用倒勾引起来:

alter table EMPLOYEE drop constraint `EMPLOYEE_ibfk_1`;
                                     ^               ^

使用
单引号将其转换为一个字符串。

首先删除
外键
部门
员工
的约束(请注意奇怪的语法,您应该使用
删除外键
,但使用约束(!)标识符):

然后删除
EMPLOYEE
表:

DROP TABLE EMPLOYEE ; 

代码的问题是使用了
DROP CONSTRAINT
——这是正确的,因为这是
ALTER TABLE
的标准SQL语法


然而,MySQL“更喜欢”
删除外键
。换句话说,在这种情况下,它不符合标准。

看起来您在ALTER…DROP语句中拼错了“constraint”,如果您确实复制并粘贴了。我在键入时拼错了,我该怎么做?我也尝试过:altertableemployeedrop
Ssn_8
;首先在Department表中执行此操作,删除employee表的外键约束。我也在Department表中尝试了此操作,但得到了相同的错误。我是否应该尝试删除约束或实际键?我得到错误:#1025-重命名“”时出错/leal@002ddb/#sql-392_7d0fe“至”/leal@002ddb/DEPARTMENT'(errno:150)删除密钥时出错#1064当我尝试删除约束时,请在此处执行一些操作,我看到您在同一个表EMPLOYEE_ibfk_3和EMPLOYEE_ibfk_4中引用外键。先取下那些,然后取下部门的**不要掉钥匙。。没有必要,只是契约仍然会得到相同的错误:#1064-您的SQL语法有错误;查看与MySQL服务器版本对应的手册,以了解第1行“constraint
EMPLOYEE_ibfk_1
”附近使用的正确语法。是,因为您需要删除departments表firstNo中的外键约束。标识符需要被引用,仅当它们是保留字时。感谢您的帮助,您的代码允许我删除这两个表。我能问一下这个代码和我以前做的有什么区别吗?是不是因为它在同一个语句中删除了两个键?哦,好的,谢谢你的帮助
DROP TABLE EMPLOYEE ;