Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL错误#1005(代码150)_Mysql_Mysql Error 1005 - Fatal编程技术网

MySQL错误#1005(代码150)

MySQL错误#1005(代码150),mysql,mysql-error-1005,Mysql,Mysql Error 1005,我已尝试创建此表,但在FKs中我尝试的都不起作用 CREATE TABLE `tb_AutSituacao` ( `id` int(11) NOT NULL AUTO_INCREMENT, `Nome` varchar(50) CHARACTER SET latin1 NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 CREATE TABLE `tb_AutHistoric

我已尝试创建此表,但在FKs中我尝试的都不起作用

CREATE TABLE `tb_AutSituacao` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `Nome` varchar(50) CHARACTER SET latin1 NOT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8

CREATE TABLE `tb_AutHistorico` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `Situacao` int(11) NOT NULL,
 `Data` date NOT NULL,
 `Agente` int(11) NOT NULL,
 `Proposta` int(11) NOT NULL,
 PRIMARY KEY (`id`),
 KEY `AutHistorico_Situacao` (`Situacao`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8

ALTER TABLE `tb_AutHistorico` ADD FOREIGN KEY ( `Situacao` ) REFERENCES `sicor`.`tb_AutSituacao` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT;
我总是得到“#1005-无法创建表'tablename'(错误号:150)”。谢谢你的帮助

$ perror 150
MySQL error code 150: Foreign key constraint is incorrectly formed

修复您的
外键定义。

外键约束定义存在问题(请参阅-最后一段以了解调试)

发生此错误时,要么定义本身不正确(语法错误),要么引用的内容有问题。您的语法是正确的,what is references是正确的,所以它很可能是schema引用

我可以很好地运行这些语句,但我必须在create表名前面加上模式名。否则,MySQL将假定您正在尝试为当前使用的数据库创建表。请参阅以下经修改的声明:

CREATE TABLE `sicor`.`tb_AutSituacao` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `Nome` varchar(50) CHARACTER SET latin1 NOT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

CREATE TABLE `sicor`.`tb_AutHistorico` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `Situacao` int(11) NOT NULL,
 `Data` date NOT NULL,
 `Agente` int(11) NOT NULL,
 `Proposta` int(11) NOT NULL,
 PRIMARY KEY (`id`),
 KEY `AutHistorico_Situacao` (`Situacao`),
 CONSTRAINT `FK_Situacao` FOREIGN KEY (`Situacao`) REFERENCES `sicor`.`tb_AutSituacao` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

另外,请注意,创建表后不必定义约束,而是可以将其包含在创建定义中,如上图所示。

是否
sicor
是有效的架构名称?你有:“REFERENCES
sicor
tb\u AutSituacao
id
)”也许如果你删除
sicor
前缀并改为“REFERENCES
tb\u AutSituacao
”,是的,但我会尝试一下。更新:使用或不使用架构名称时出现相同错误。当我添加分号并删除
sicor.
。不确定是否相关,但您使用的是什么版本的MySQL?@Wiseguy MySQL 5.5.16。删除分号是什么意思?我只是在CREATE语句的末尾添加了分号,这样它就可以在SQLFIDLE上运行(在我之前的评论中链接)。就这样。我复制了您的查询,在每个CREATE语句后添加了分号,并删除了
sicor.