2016-09-12 44 views
0

2つのテーブルを作成してデータを挿入しようとしましたが、このエラーが発生しましたアスリートの作成に失敗しました SQLSTATE [23000]:整合性制約違反:1217は、削除または親行を更新できません:外部キー制約が失敗しアスリートの作成に失敗しましたSQLSTATE [23000]:整合性制約違反:

try 
    { 
    $dropQuery = "DROP TABLE IF EXISTS Country"; 
    $pdo->exec($dropQuery); 
    $dropQuery = "DROP TABLE IF EXISTS Athlete"; 
    $pdo->exec($dropQuery); 



$createQuery = "CREATE TABLE Country 
    (
     countryID int(11) NOT NULL AUTO_INCREMENT, 
     name varchar(30) NOT NULL, 
     population decimal(10,0), 
     flagImage varchar(30) NOT NULL, 
     PRIMARY KEY (countryID) 
    )"; 


    $pdo->exec($createQuery); 
} 
catch(PDOException $e) 
{ 
    $error = " Creating Country the table failed"; 
    include 'error.php'; 
    exit(); 
} 
try 
{ 
$createQuery = "CREATE TABLE Athlete 
    (
     athleteId int(11) NOT NULL AUTO_INCREMENT, 
     lastName varchar(30) NOT NULL, 
     firstName varchar(30) NOT NULL, 
     gender char(1) NOT NULL, 
     image varchar(300) NOT NULL, 
     sport varchar(30) NOT NULL, 
     countryID int(11) NOT NULL, 
     CONSTRAINT Athlete_Country FOREIGN KEY (countryID) REFERENCES Country(countryID), 
     PRIMARY KEY (athleteId) 
    )"; 



    $pdo->exec($createQuery); 
} 
catch(PDOException $e) 
{ 
    $error = " Creating Athlete the table failed"; 
    include 'error.php'; 
    exit(); 
} 




try 
{  
     $query = "INSERT INTO Country (name,population,flagImage) VALUES ('usa',324206000,'usa.jpg')"; 
     $pdo->exec($query); 
     $query = "INSERT INTO Country (name,population,flagImage) VALUES ('Hungary',9823000,'hungary.jpg')"; 
     $pdo->exec($query); 
     $query = "INSERT INTO Country (name,population,flagImage) VALUES ('Jamaica',2930050,'jamaica.jpg')"; 
     $pdo->exec($query); 
     $query = "INSERT INTO Country (name,population,flagImage) VALUES ('United Kindom',65341183,'uk.jpg')"; 
     $pdo->exec($query); 
     $query = "INSERT INTO Country (name,population,flagImage) VALUES ('Australia',25054000,'australia.jpg')"; 
     $pdo->exec($query); 
     $query = "INSERT INTO Country (name,population,flagImage) VALUES ('South Africa',54956900,'southafrica.jpg')"; 
     $pdo->exec($query); 
     $query = "INSERT INTO Country (name,population,flagImage) VALUES ('Ethiopia',92206005,'ethiopia.jpg')"; 
     $pdo->exec($query); 
     $query = "INSERT INTO Country (name,population,flagImage) VALUES ('Poland',38437239,'poland.jpg')"; 
     $pdo->exec($query); 
     $query = "INSERT INTO Country (name,population,flagImage) VALUES ('China',1379442000,'china.jpg')"; 
     $pdo->exec($query); 


} 
catch(PDOException $e) 
{ 
    $error = "Creating Country data failed"; 
    include 'error.php'; 
    exit(); 
} 
try 
{  
     $query = "INSERT INTO Athlete VALUES (1,'Phelps','Michael','m','Phelps.jpg','Swimming',1)"; 
     $pdo->exec($query); 
     $query = "INSERT INTO Athlete VALUES (2,'Ledecky','Katie','f','Ledecky.jpg','Swimming',1)"; 
     $pdo->exec($query); 
     $query = "INSERT INTO Athlete VALUES (3,'Biles','Simone','f','Biles.jpg','Gymnastics',1)"; 
     $pdo->exec($query); 
     $query = "INSERT INTO Athlete VALUES (4,'Hosszu','Katinka','f','Hosszu.jpg','Swimming',2)"; 
     $pdo->exec($query); 
     $query = "INSERT INTO Athlete VALUES (5,'Bolt','Usain','m','Bolt.jpg','Athletics',3)"; 
     $pdo->exec($query); 
     $query = "INSERT INTO Athlete VALUES (6,'Kenny','Jason','m','Kenny.jpg','Cycling',4)"; 
     $pdo->exec($query); 
     $query = "INSERT INTO Athlete VALUES (7,'Danuta','Kozak','f','Danuta.jpg','Canoeing',2)"; 
     $pdo->exec($query); 
     $query = "INSERT INTO Athlete VALUES (8,'Murphy','Ryan','m','Murphy.jpg','Swimming',5)"; 
     $pdo->exec($query); 
     $query = "INSERT INTO Athlete VALUES (9,'Manuel','Simone','f','Manuel.jpg','Swimming',1)"; 
     $pdo->exec($query); 
     $query = "INSERT INTO Athlete VALUES (10,'Dirado','Maya','f','Dirado.jpg','Swimming',1)"; 
     $pdo->exec($query); 
     $query = "INSERT INTO Athlete VALUES (11,'van Niekirk','Wayde','m','vanNiekirk.jpg','Athletics',6)"; 
     $pdo->exec($query); 
     $query = "INSERT INTO Athlete VALUES (12,'Ayana','Almaz','f','Ayana.jpg','Athletics',7)"; 
     $pdo->exec($query); 
     $query = "INSERT INTO Athlete VALUES (13,'Wlodarczyk','Anita','f','Wlodarczyk.jpg','Athletics',8)"; 
     $pdo->exec($query); 
     $query = "INSERT INTO Athlete VALUES (14,'Long','Qingquan','m','Long.jpg','Weightlifting',9)"; 
     $pdo->exec($query); 


} 
catch(PDOException $e) 
{ 
    $error = "Creating Athlete the data failed"; 
    include 'error.php'; 
    exit(); 
} 
+2

Countryテーブルの前にAthleteテーブルを作成していますが、AthleteテーブルにはCountryテーブルを参照しようとしている列があります。 –

+0

良いニュースは、あなたが作成の順序を反転すると、私はそれをチェックしたように、FK作成が成功する – Drew

+0

誰かがまだ動作しないように助けることができます –

答えて

0

あなたのコード内の二つの問題があります まずチンが言ったように、あなたが前にあなたの "CREATE国stamentを実行する必要が'CREATE Athlete' stament。 2番目に、 '国の選手の評価点...'に誤りがあります。動作させるには、 '国'を削除する必要があります。

+0

私はすべてのコードを追加しています。 –

関連する問題