对于与该主题相关的问题,我深表歉意。我知道在其他几篇文章中已经讨论了该主题,并且该主题重复了一些,但是我所经历的这些帖子并没有帮助我解决问题。
我有以下SQL代码可添加两个表:
CREATE TABLE IF NOT EXISTS `opa`.`iddocumenttype`(
`iddocumenttypeid` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(50) NOT NULL,
PRIMARY KEY(`iddocumenttypeid`),
KEY (`iddocumenttypeid`)
) ENGINE=INNODB CHARSET=utf8;
和
CREATE TABLE IF NOT EXISTS `opa`.`identificationdocumentdetails`(
`identificationdocumentdetailsid` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`IDdocumenttypeid` INT(11) UNSIGNED NOT NULL,
`IDdocumentnumber` VARCHAR(128),
`name` VARCHAR(200) COMMENT 'Exact name as on idDoc?',
`dateofissue` DATE CHECK (dateofissue < CURRENT_DATE()),
`placeofissue` VARCHAR(128),
`validtill` DATE CHECK (validtill > CURRENT_DATE()),
PRIMARY KEY (`identificationdocumentdetailsid`),
CONSTRAINT `FK_identificationdocumentdetails_iddocumenttype` FOREIGN KEY (`IDdocumenttypeid`) REFERENCES `opa`.`iddocumenttype`(`iddocumenttypeid`)) ENGINE=INNODB CHARSET=utf8;
现在,当我运行查询以创建第二个表时,identificationdocumentdetails
出现以下错误:
Error Code: 1005
Can't create table 'opa.identificationdocumentdetails' (errno: 150)
我不明白为什么会这样,我确信这与CONSTRAINT
行有关,因为当我删除此行时:
CONSTRAINT `FK_identificationdocumentdetails_iddocumenttype` FOREIGN KEY (`IDdocumenttypeid`) REFERENCES `opa`.`iddocumenttype`(`iddocumenttypeid`)
存储过程可以正常工作,但是我想我在这里错过了哪里出了问题,请问有人可以告诉我我在这里没看到什么...。
`IDdocumenttypeid` INT(11)
在identificationdocumentdetails
表需要是完全相同的类型与列中引用,这是
`iddocumenttypeid` INT(11) UNSIGNED NOT NULL
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句