mysql> alter table blackcoat add constraint fkBCAP foreign key(job) references p
opedom(ID);
ERROR 1005 (HY000): Can't create table '.\generalmanage\#sql-a80_20.frm' (errno:
 150)mysql> show create table popedom;
-------------------------------------+
| Table   | Create Table-------------------------------------+
| popedom | CREATE TABLE `popedom` (
  `ID` smallint(5) unsigned NOT NULL auto_increment,
  `purview` char(50) default NULL,
  `selectpurview` tinyint(1) default '0',
  `insertPurview` tinyint(1) default NULL,
  `updatePurview` tinyint(1) default NULL,
  `deletePurview` tinyint(1) default NULL,
  PRIMARY KEY  (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+---------+--------------------------------------------------
mysql> show create table blackcoat;
-------------------------------------------------+
| Table     | Create Table
-------------------------------------------------+
| blackcoat | CREATE TABLE `blackcoat` (
  `ID` int(10) unsigned NOT NULL auto_increment,
  `Name` char(50) NOT NULL,
  `job` smallint(5) NOT NULL,
  PRIMARY KEY  (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
-------------------------------------------------+

解决方案 »

  1.   

    CREATE TABLE `blackcoat` (
      `ID` int(10) unsigned NOT NULL AUTO_INCREMENT,
      `Name` char(50) NOT NULL,
      `job` smallint(5) unsigned NOT NULL,
      PRIMARY KEY (`ID`),
      KEY `fkBCAP` (`job`),
      CONSTRAINT `fkBCAP` FOREIGN KEY (`job`) REFERENCES `popedom` (`ID`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1
      

  2.   

    CREATE TABLE `blackcoat` (
     `ID` int(10) unsigned NOT NULL auto_increment,
     `Name` char(50) NOT NULL,
     `job` smallint(5) unsigned NOT NULL,                  -- 数据类型不一致!
     PRIMARY KEY  (`ID`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1