#1072键列不存在MySQL外键错误

时间:2012-12-11 02:47:20

标签: mysql

我已经搜索过可能有效的答案,但没有解决。

我已经创建了这样的表,当创建表'hobbies'时出现错误1072。

CREATE  TABLE IF NOT EXISTS `project_r`.`user` (
  `user_id` INT NOT NULL ,
  `password` VARCHAR(45) NOT NULL ,
  `RealName` VARCHAR(45) NOT NULL ,
  `FamilyName` VARCHAR(45) NOT NULL ,
  `birthdate` VARCHAR(45) NOT NULL ,
  `Homecity` VARCHAR(45) NOT NULL ,
  `school_id` INT NOT NULL ,
  `school_enteryear` INT NOT NULL ,
  `email` VARCHAR(45) NULL ,
  `activestat` VARCHAR(45) NULL ,
  `onlinestat` VARCHAR(45) NULL ,
  `regtime` DATETIME NOT NULL ,
  `avatar` VARCHAR(45) NULL ,
  `status` VARCHAR(45) NULL ,
  `desc` VARCHAR(45) NULL ,
  `self_comment` VARCHAR(45) NULL ,
  `userMsg_id` INT NOT NULL ,
  PRIMARY KEY (`user_id`) ,
  INDEX `fk_user_school1_idx` (`school_id` ASC) ,
  CONSTRAINT `fk_user_school1`
    FOREIGN KEY (`school_id` )
    REFERENCES `project_r`.`school` (`school_id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;

然后创建表'爱好'

CREATE  TABLE IF NOT EXISTS `project_r`.`hobbies` (
  `hobby_user_id` INT NOT NULL ,
  `favorite_music` VARCHAR(45) NULL ,
  `favorite_game` VARCHAR(20) NULL ,
  `favorite_film` VARCHAR(45) NULL ,
  `favorite_book` VARCHAR(45) NULL ,
  `favorite_sport` VARCHAR(45) NULL ,
  `favorite_cartoon` VARCHAR(45) NULL ,
  `hobby` VARCHAR(45) NULL ,
  PRIMARY KEY (`user_id`) ,
  INDEX `fk_user_id` (`hobby_user_id` ASC) ,
  CONSTRAINT `fk_user_id`
    FOREIGN KEY (`hobby_user_id` )
    REFERENCES `project_r`.`user` (`user_id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;

添加或不添加AUTO-INCREMENT事件或添加到引用表的索引都不起作用。 请求帮助。

3 个答案:

答案 0 :(得分:1)

在“爱好”表格中,您尝试将pk设置为user_id,该值不存在。将其更改为:

PRIMARY KEY (`hobby_user_id`)

答案 1 :(得分:1)

user_id上的字段hobbies不存在, 您可能希望hobby_user_id成为表hobbies中的主键:

 PRIMARY KEY (`hobby_user_id`),

在表hobbies上隐藏外键没有错。

答案 2 :(得分:0)

您在PRIMARY KEY的{​​{1}}列上设置了user_id,但没有此列。它被称为hobbies

hobby_user_id

在我自己的数据库中进行快速测试,使用正确的 PRIMARY KEY (`hobby_user_id`) , 规范

成功创建了这两个表