这是一个很长的问题,请仔细阅读。我已经列出了我提到的一些链接,但我已经阅读了发布此问题时抛出的所有建议。这不是重复的问题,如https://stackoverflow.com/questions/31341481/unable-to-figure-out-the-cause-for-error-1005-in-mysql-database所示。
我一直在尝试编写一个小型MySQL数据库,其中包含两个表角色,用户定义如下:
作用
CREATE TABLE `role` (
`roleid` varchar(20) NOT NULL,
`role_name` varchar(255) NOT NULL,
`permission` int(11) NOT NULL,
PRIMARY KEY (`roleid`),
UNIQUE KEY `roleid` (`roleid`),
UNIQUE KEY `role_name` (`role_name`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
用户
CREATE TABLE `user` (
`uid` int(11) NOT NULL AUTO_INCREMENT,
`uname` varchar(255) NOT NULL,
`slug` varchar(255) NOT NULL,
`email` varchar(255) NOT NULL,
`password` varchar(255) NOT NULL,
`rid` varchar(20) NOT NULL,
UNIQUE KEY `uid` (`uid`),
UNIQUE KEY `uname` (`uname`),
UNIQUE KEY `slug` (`slug`),
UNIQUE KEY `email` (`email`),
UNIQUE KEY `password` (`password`),
KEY `rid` (`rid`),
CONSTRAINT `user_ibfk_1` FOREIGN KEY (`rid`) REFERENCES `role` (`roleid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
现在当我发出ALTER TABLE 'user' DROP FOREIGN KEY;
我收到错误:
ERROR 1005 (HY000): Can't create table 'parth.#sql-418_24' (errno: 150)
parth是数据库的名称。
我咨询了以下讨论:
SHOW ENGINE INNODB STATUS
就上述情况提供了以下输出:
------------------------
LATEST FOREIGN KEY ERROR
------------------------
150710 18:20:35 Error in foreign key constraint of table parth/#sql-418_24:
foreign key:
Syntax error close to:
请帮我解决这个问题。感谢。
当我执行ALTER TABLE命令时,表parth /#sql-418_24自动生成。根据参考手册,ALTER TABLE的工作原理是将原始表的内容复制到临时表中,在本例中为#sql-418_24,然后将其重命名为模式中指定的表名。因此,表名中的特殊字符似乎不是问题。请帮忙。
MySql版本5.5.43-0ubuntu0.14.04.1 操作系统Ubuntu 14.04
感谢您的帮助。
答案 0 :(得分:0)
试试这个......
ALTER TABLE `user` DROP FOREIGN KEY `user_ibfk_1`;
你应该删除约束,这里的约束名为user_ibfk_1