创建外键约束时出现MYSQL错误

时间:2013-04-22 15:49:44

标签: mysql foreign-keys primary-key

我正在使用MySQL创建一个小型数据库。并面临外键和主键的一些问题。我真的不明白,因为这似乎是一个简单的问题。

CREATE  TABLE IF NOT EXISTS `db_trimms`.`urban_area` (
  `area_id` INT(10)  NOT NULL ,
  `city` VARCHAR(60) NOT NULL ,
  `state` VARCHAR(60) NOT NULL ,
  `urban_area` VARCHAR(60) NOT NULL ,
  `census_region` VARCHAR(60) NOT NULL ,
  `area_no` VARCHAR(60) NOT NULL ,
  `freeway_speed` VARCHAR(60) NOT NULL ,
  `arterial_speed` VARCHAR(60) NOT NULL ,
  PRIMARY KEY (`area_id`) )
ENGINE = InnoDB
DEFAULT CHARACTER SET = latin1;

成功运行。但是在创建另一个表并创建外键时引用上表的area_id ......它的创建问题......

#1005 - Can't create table 'db_trimms.emiss_others_offpeak' (errno: 150) (Details...)

这是查询

CREATE  TABLE IF NOT EXISTS `db_trimms`.`emiss_others_offpeak` (
  `area_id` INT(10) UNSIGNED NOT NULL ,
  `ammonia` VARCHAR(60) NOT NULL ,
  `atm_carbon_dio` VARCHAR(60) NOT NULL ,
  `carbon_dio_equiv` VARCHAR(60) NOT NULL ,
  `carbon_mono` VARCHAR(60) NOT NULL ,
  `methane` VARCHAR(60) NOT NULL ,
  `nitrogen_dio` VARCHAR(60) NOT NULL ,
  `nitrogen_oxide` VARCHAR(60) NOT NULL ,
  `nitrous_oxide` VARCHAR(60) NOT NULL ,
  `non_meth_hydrocarbs` VARCHAR(60) NOT NULL ,
  `oxides_of_nitrogen` VARCHAR(60) NOT NULL ,
  `particulate_matter_pm10` VARCHAR(60) NOT NULL ,
  `particulate_matter_pm2_5` VARCHAR(60) NOT NULL ,
  `sulfate` VARCHAR(60) NOT NULL ,
  ` sulfur_dioxide` VARCHAR(60) NOT NULL ,
  `total_hydrocarbon` VARCHAR(60) NOT NULL ,
  `vol_org_comp` VARCHAR(60) NOT NULL ,
  PRIMARY KEY (`area_id`) ,
  CONSTRAINT `fk_others_offpeak_urban`
    FOREIGN KEY (`area_id` )
    REFERENCES `db_trimms`.`urban_area` (`area_id` )
    ON DELETE CASCADE
    ON UPDATE CASCADE)
ENGINE = InnoDB
DEFAULT CHARACTER SET = latin1;

1 个答案:

答案 0 :(得分:1)

数据类型彼此不兼容。从表area_id创建列urban_areaUNSIGNED

`area_id` INT(10) UNSIGNED NOT NULL ,
相关问题