2012-05-03 10 views
0

以下のクエリは実行できません。 "person"という別のテーブルがあり、それには主キーperson_idがあります。ご覧のとおり、この列を(顧客テーブルの)外部キーとして取得しようとしています。 phpMyAdminは、#1064構文エラーを返します。ここで何がうまくいかないの?Innodbは外部キーを受け付けません

CREATE TABLE IF NOT EXISTS `resort`.`customers` (
    `person_id` VARCHAR(45) NOT NULL , 
    `cid` INT UNSIGNED NOT NULL AUTO_INCREMENT , 
    UNIQUE INDEX `person_id_UNIQUE` (`cid` ASC) , 
    PRIMARY KEY (`person_id`) , 
    UNIQUE INDEX `person_id_UNIQUE` (`person_id` ASC) , 
    CONSTRAINT `person_id` 
    FOREIGN KEY() 
    REFERENCES `resort`.`person`() 
    ON DELETE CASCADE 
    ON UPDATE CASCADE) 
ENGINE = InnoDB 

ところで、このクエリはOracleのMySQL Workbenchによって生成されます。

答えて

3

あなたは制約定義の列を含める必要があります。

CONSTRAINT person_id 
    FOREIGN KEY() 
    REFERENCES resort.person() 
    ON DELETE CASCADE 
    ON UPDATE CASCADE 

は次のようになります。

CONSTRAINT fk_person_id 
    FOREIGN KEY (person_id) 
    REFERENCES resort.person (id) 
    ON DELETE CASCADE 
    ON UPDATE CASCADE 
+0

今では言う: "#1061 - 重複キー名 'person_id_UNIQUE'" だけ – gzg

+1

もぉ、あなたのSQLを見てください。これは、同じ名前のUNIQUE定義が2つあるためです:「UNIQUE INDEX person_id_UNIQUE(cid ASC)」と「UNIQUE INDEX person_id_UNIQUE(person_id ASC)」です。 UNIQUE INDEXの直後の部分は索引の名前です。 –

関連する問題