2

user_processes2つの列で構成される多対多のテーブルがあります:userprocessuserユーザーテーブルの主キーを参照する外部キーです。このprocess列は、プロセスの主キーを参照する外部キーです。ただし、user_processesの複数列の主キーでuser十分processなはずなので、別の主キー列は必要ありません(そうですか?別の列の必要性はわかりませんid)。1人のユーザーが多くのプロセスを持つことができますが、同じユーザーが同じプロセスを持つ複数の行があってはなりません。

次のコードは、phpmyadminでエラー「#1005-テーブル'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存在しない可能性があります。これを呼び出す前に、参照されるテーブルのcreatetableステートメントが実行されていることを確認してください。

または、参照されるフィールドのタイプusers.idおよび/またはフィールドprocesses.idのタイプと一致しませんuser_processes.user/ user_processes.process。この場合、これらのフィールドも。である必要がありますINT UNSIGNED

于 2013-01-02T00:54:41.830 に答える