2013-04-22 78 views
1

我正在使用MySQL創建一個小型數據庫。並面臨外鍵和主鍵的一些問題。我真的不明白,因爲這似乎是一個簡單的問題。創建外鍵約束時發生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; 
+0

我不認爲你可以做一個外鍵引用到另一個數據庫。 – 2013-04-22 15:51:45

+0

其相同的數據庫'db_trimms' – 2013-04-22 15:53:30

回答

1

的數據類型不兼容與彼此。從表urban_area製作列area_idUNSIGNED

`area_id` INT(10) UNSIGNED NOT NULL , 
+0

完美.....它工作....非常感謝.... :) – 2013-04-22 16:00:11

+0

不客氣':D' – 2013-04-22 16:00:28