Resolving Error Code: 1005. Can't create table '' (errno: 150) Error

为君一笑 提交于 2019-12-01 19:11:15

Create advertisment table with default charset as utf8;

latin1 columns are not equivalent to utf8 columns. So foreign key constraint can not form correctly. Hence the 1005 (ER_CANT_CREATE_TABLE) error.

Here is my mysql log.

mysql> 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=utf8; -- <== This little change make it work.
Query OK, 0 rows affected (0.06 sec)

mysql> 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;
Query OK, 0 rows affected (0.12 sec)

Your FOREIGN KEY CONSTRAINT for table candidatemain and advertisment has different charset, this causes the error, let them have same charset.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!