2

我有一个由两列组成的多对多表user_processesuserprocess. user是引用用户表主键的外键。该process列是引用进程主键的外键。但是,我不需要单独的主键列,因为 , 上的user_processes多列主键应该足够了(对吗?我没有看到需要单独的列)。一个用户可以有多个进程,但同一用户不应有多个行具有相同的进程。userprocessid

以下代码在 phpmyadmin 中给了我错误“#1005 - Can't create table 'test.user_processes' (errno: 150) (Details...)”。

这是由mysql工作台生成的代码:

-- -----------------------------------------------------
-- Table `test`.`user_processes`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `test`.`user_processes` (
  `user` INT UNSIGNED NOT NULL ,
  `process` INT UNSIGNED NOT NULL ,
  PRIMARY KEY (`user`, `process`) ,
  INDEX `fk_user_processes_users1_idx` (`user` ASC) ,
  INDEX `fk_user_processes_processes1_idx` (`process` ASC) ,
  CONSTRAINT `fk_user_processes_users1`
    FOREIGN KEY (`user` )
    REFERENCES `test`.`users` (`id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_user_processes_processes1`
    FOREIGN KEY (`process` )
    REFERENCES `test`.`processes` (`id` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;

知道为什么它不让我这样做,以及正确的解决方案是什么?

4

1 回答 1

0

该表users和/或processes可能不存在。确保在调用它之前执行引用表的创建表语句。

或引用字段的类型users.id和/或与字段/processes.id的类型不匹配。在这种情况下,这些字段也应该是.user_processes.useruser_processes.processINT UNSIGNED

于 2013-01-02T00:54:41.830 回答