我有一个多对多的表格user_processes
,其中包含两列:user
和process
。 user
是引用用户表主键的外键。 process
列是引用进程主键的外键。但是,我user_processes
中不需要单独的主键列,因为user
,process
上的多列主键应该足够了(对吗?我没有看到需要对于单独的id
列)。一个用户可以有许多进程,但不应该有多个行,同一个用户具有相同的进程。
以下代码在phpmyadmin中给出了错误“#1005 - 无法创建表'test.user_processes'(错误号:150)(详细信息...)”。
这是由mysql workbench生成的代码:
-- -----------------------------------------------------
-- 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;
知道为什么不让我这样做,以及正确的解决方案是什么?
答案 0 :(得分:0)
表users
和/或processes
可能不存在。确保在调用它之前执行引用表的create table语句。
或引用字段users.id
和/或processes.id
的类型与字段user_processes.user
/ user_processes.process
的类型不匹配。在这种情况下,这些字段也应为INT UNSIGNED
。