我創造下在mysql中解決錯誤代碼:1005無法創建表 ''(錯誤:150)錯誤
三個表
- POSTMASTER
- ADVERTISEMENT
- CANDIDATEMAIN
以下是創建語句
POSTMASTER
CREATE TABLE `postmaster` (
`POSTCODE` int(2) NOT NULL DEFAULT '0',
`POSTNAME` varchar(250) DEFAULT NULL,
PRIMARY KEY (`POSTCODE`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
ADVERTISEMENT
CREATE TABLE `advertisment` (
`ADVTNO` varchar(35) NOT NULL,
`ADVTDATE` date NOT NULL,
`POSTCODE` int(2) NOT NULL,
`ADVTOPENDATE` date NOT NULL COMMENT 'ADVERTISEMENT OPENING DATE',
`ADVTCLOSEDATE` date NOT NULL COMMENT 'ADVERTISEMENT CLOSING DATE',
`EDITCLOSEDATE` date NOT NULL COMMENT 'CLOSING DATE FOR EDITING APPLICATION',
`LASTREPRINTDATE` date NOT NULL COMMENT 'LAST DATE FOR REPRINTING APPLICATION',
`FEESCST` int(4) NOT NULL COMMENT 'FEE FOR SC/ST CATEGORY',
`FEESTAFF` int(4) DEFAULT NULL COMMENT 'FEE FOR STAFF ',
`FEEOBC` int(4) DEFAULT NULL COMMENT 'FEE FOR OBC CATEGORY',
`ADVOCATEEXPERIENCE` int(2) DEFAULT NULL,
PRIMARY KEY (`ADVTNO`,`ADVTDATE`,`POSTCODE`),
KEY `fk_post` (`POSTCODE`),
CONSTRAINT `fk_post` FOREIGN KEY (`POSTCODE`) REFERENCES `postmaster` (`POSTCODE`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
一切都到這裏被罰款,但是當我去創造CANDIDATEMAIN
表,收到錯誤
這裏是CANDIDATEMAIN
CREATE TABLE `candidatemain` (
`ADVTNO` varchar(35) NOT NULL DEFAULT '',
`ADVTDATE` date NOT NULL DEFAULT '0000-00-00',
`POSTCODE` int(2) NOT NULL DEFAULT '0',
`REGISTRATIONNO` int(6) NOT NULL DEFAULT '0',
`SALUTATION` varchar(10) NOT NULL,
`FULLNAME` varchar(90) NOT NULL,
`SURNAME` varchar(30) DEFAULT NULL,
`NAME` varchar(30) NOT NULL,
`LASTNAME` varchar(30) DEFAULT NULL,
`LASTUPDATEDIP` varchar(20) NOT NULL DEFAULT '',
`LASTUPDATEDDATE` date DEFAULT NULL,
`ENTRYDATE` date NOT NULL,
PRIMARY KEY (`ADVTNO`,`ADVTDATE`,`POSTCODE`,`REGISTRATIONNO`),
KEY `FK_ADVT` (`ADVTNO`, `ADVTDATE`,`POSTCODE`) ,
CONSTRAINT `FK_ADVT` FOREIGN KEY (`ADVTNO`, `ADVTDATE`,`POSTCODE`) REFERENCES `advertisment` (`ADVTNO`, `ADVTDATE`,`POSTCODE`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
的錯誤,我得到的創建語句是:
Error Code: 1005. Can't create table 'dbName.candidatemain' (errno: 150)
有什麼能爲這個錯誤的原因是什麼?
優化版本的MySQL:的MySQL版本14.14 DISTRIB 53年5月1日,對於Win64的
問題出在您的約束,按照:http://dev.mysql.com/doc/refman/5.0/en/innodb-error-codes.html說:***「1005(ER_CANT_CREATE_TABLE)無法創建如果錯誤消息指向錯誤150,表創建失敗,因爲外鍵約束未正確形成。「*** – Nanne
是表名'advertisment'故意錯誤嗎? –
@Shiplu它只是一個錯字! –