0

以下のクエリはエラーになります。このクエリは MySQL Workbench で作成しました

Error

SQL query:

-- -----------------------------------------------------
-- Table `smsdb`.`IntSupervisor`
-- -----------------------------------------------------
  CREATE TABLE IF NOT EXISTS `smsdb`.`IntSupervisor` (
   `int_supr_id` VARCHAR( 32 ) NOT NULL ,
   `cent_id` INT NOT NULL ,
   INDEX `fk_IntSupervisor_Person1_idx` ( `int_supr_id` ASC ) ,
   INDEX `fk_IntSupervisor_Center1_idx` ( `cent_id` ASC ) ,
   PRIMARY KEY ( `int_supr_id` ) ,
   CONSTRAINT `fk_parent_id` FOREIGN KEY ( `int_supr_id` ) 
   REFERENCES `smsdb`.`Staff` (`id`) ON DELETE CASCADE ON UPDATE RESTRICT ,
   CONSTRAINT `fk_center_id` FOREIGN KEY ( `cent_id` )
   REFERENCES  `smsdb`.`Center` (`cent_id`
 ) ON DELETE CASCADE ON UPDATE RESTRICT
 ) ENGINE = InnoDB;

実行時にエラーメッセージが表示されました:

MySQL said: Documentation  
    #1022 - Can't write; duplicate key in table 'intsupervisor'

この問題を解決する方法について誰かがアイデアを持っている場合は、正しい方向に導いてください。ありがとう!

4

3 に答える 3

1

クエリ全体で同じ名前の 2 つの外部キーを持つことはできません。

PRIMARY KEY ( `int_supr_id` ) ,
       CONSTRAINT `fk_parent_id` FOREIGN KEY ( `int_supr_id` ) 

上記のステートメントでは、単一の列でインデックス タイプを再定義することはできません。

では、この厄介なエラーを修正するにはどうすればよいでしょうか?


データベースの構造に基づいて、上記の 2 行のいずれかを削除する必要があります。作成しているテーブルから別のテーブルへのリンクを推測しているので、置き換えることをお勧めします...

PRIMARY KEY ( `int_supr_id` ) ,
       CONSTRAINT `fk_parent_id` FOREIGN KEY ( `int_supr_id` )

以下を使用します。

CONSTRAINT `fk_parent_id` FOREIGN KEY ( `int_supr_id` )

(上記が機能しない場合は、外部キーのテーブル名を指定する必要がある可能性があります)

于 2013-08-03T19:03:18.900 に答える
1

列 'int_supr_id' にインデックスを追加してから、それに primary_index も追加します。それに追加できるインデックスは1つだけです(まあ、通常の場合)

于 2013-08-03T18:59:29.037 に答える
0

1つの列に主キーと外部キーの両方を作成しているため、おそらくエラーがスローされますint_supr_id

于 2013-08-03T19:06:56.773 に答える