2016-09-05 61 views
-3

我是新來的PHP/SQL,我得到一個與外鍵的行語法錯誤。語法錯誤外鍵

語法錯誤或訪問衝突:1064

$createQuery ="CREATE TABLE AthleteTable 
    (
     athleteID INT(6) NOT NULL AUTO_INCREMENT, 
     lastName VARCHAR(20) NOT NULL, 
     firstName VARCHAR(30) NOT NULL, 
     gender  CHAR(1) NOT NULL, 
     image  VARCHAR(20) NOT NULL, 
     eventID  INT(6) NOT NULL, 
     medal  VARCHAR(6) NOT NULL, 

     CONSTRAINT foreign FOREIGN KEY (eventID) REFERENCES eventsTable(eventID), 
     PRIMARY KEY(athleteID) 

    )"; 

如果有任何人知道什麼是錯的希望得到一些幫助。

------------>

新的錯誤:

inserting data AthleteTable failed SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (powlz1_in612 . AthleteTable , CONSTRAINT AthleteTable_ibfk_1 FOREIGN KEY (eventID) REFERENCES eventsTable (eventID))

這裏是我讓表:

$createQuery ="CREATE TABLE eventsTable 
    (
     eventID  INT(6) NOT NULL AUTO_INCREMENT, 
     sport  VARCHAR(20) NOT NULL, 
     event  VARCHAR(30) NOT NULL, 

     PRIMARY KEY (eventID) 

    )"; 
    $pdo->exec($createQuery); 

    $createQuery ="CREATE TABLE AthleteTable 
    (
     athleteID  INT(6) NOT NULL AUTO_INCREMENT, 
     firstName  VARCHAR(20) NOT NULL, 
     lastName  VARCHAR(20) NOT NULL, 
     gender   VARCHAR(20) NOT NULL, 
     image   VARCHAR(20) NOT NULL, 
     eventID   INT(20) NOT NULL, 
     medal   VARCHAR(6) NOT NULL, 

     CONSTRAINT SportEvents FOREIGN KEY (`eventID`) REFERENCES  eventsTable(`eventID`), 
     PRIMARY KEY(`athleteID`) 

    )"; 
    $pdo->exec($createQuery); 

看着別人後問題似乎都是一個缺失的領域,但這兩個表都包含一個eventID,所以我不明白爲什麼它失敗了?

回答

3
$createQuery ="CREATE TABLE AthleteTable 
(
    athleteID INT(6) NOT NULL AUTO_INCREMENT, 
    lastName VARCHAR(20) NOT NULL, 
    firstName VARCHAR(30) NOT NULL, 
    gender  CHAR(1) NOT NULL, 
    image  VARCHAR(20) NOT NULL, 
    eventID  INT(6) NOT NULL, 
    medal  VARCHAR(6) NOT NULL, 

    CONSTRAINT FOREIGN KEY (eventID) REFERENCES eventsTable(eventID), 
    PRIMARY KEY(athleteID) 

)"; 

你有兩個字FOREIGN。這解決了你的1064.

請閱讀下面關於你的1452錯誤的評論,因爲你引用的表上的安裝問題會出現。

+0

我改變了這一點,仍然有錯誤,在另一個文件,當修復解決這個不知何故,謝謝你的錯誤。 – flanelman

+0

它在另一個索引和列準備接受FK的銀行。但是,至少刪除了你的1064 – Drew

+0

得到了一個新的錯誤,1452.任何想法是什麼原因造成的?我已經編輯了原來的帖子:) – flanelman