简体   繁体   English

创建运动员表失败SQLSTATE [23000]:违反完整性约束:

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

i am trying to create to 2 tables and inserting data into them but i am geting this error Creating Athlete the table failed SQLSTATE[23000]: Integrity constraint violation: 1217 Cannot delete or update a parent row: a foreign key constraint fails 我正在尝试创建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();
}

There are two issues in your code: First, as Chin said, you have to execute your 'CREATE Country' stament before 'CREATE Athlete' stament. 您的代码中有两个问题:首先,正如Chin所说,您必须先执行“创建国家”菜单,然后再执行“创建运动员”菜单。 And second, you have an error in the'INSERT INTO Country Athlete VALUES ...', you need to remove 'Country' to make it work. 其次,您在“ INSERT INTO Country Athlete VALUES ...”中存在错误,您需要删除“ Country”以使其正常工作。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM