2016-09-05 2 views
-3

私はphp/sqlを使い慣れていません。私は外部キーの行に構文エラーがあります。構文エラーforeign keys

構文エラーまたはアクセス違反: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

新しいエラーが発生しました。何が原因なのでしょうか?私は元の投稿を編集しました:) – flanelman