【发布时间】:2012-06-22 22:59:53
【问题描述】:
我已经尝试过创建这个表,但我没有尝试过使用 FK。
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' (errno: 150)”。感谢您的帮助。
【问题讨论】:
-
sicor是有效的模式名称吗?您有:“REFERENCESsicor.tb_AutSituacao(id)”也许如果您删除sicor前缀并更改为“REFERENCEStb_AutSituacao(id)” -
是的,但我会尝试不使用这个。更新:带有或不带有架构名称的相同错误。
-
当我添加分号并删除
sicor.,it works。不确定它是否相关,但您使用的是什么版本的 MySQL? -
@Wiseguy MySQL 5.5.16。删除分号是什么意思?
-
我只是在 CREATE 语句的末尾添加了分号,这样它就可以在 sqlfiddle 上运行(链接在我之前的评论中)。而已。我复制了您的查询,在每个 CREATE 语句后添加了一个分号,并删除了
sicor.。