簡體   English   中英

創建運動員表失敗SQLSTATE [23000]:違反完整性約束:

[英]Creating Athlete the table failed SQLSTATE[23000]: Integrity constraint violation:

我正在嘗試創建2個表並將數據插入其中,但是卻遇到此錯誤創建運動員表失敗SQLSTATE [23000]:違反完整性約束:1217無法刪除或更新父行:外鍵約束失敗

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();
}

您的代碼中有兩個問題:首先,正如Chin所說,您必須先執行“創建國家”菜單,然后再執行“創建運動員”菜單。 其次,您在“ INSERT INTO Country Athlete VALUES ...”中存在錯誤,您需要刪除“ Country”以使其正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM