繁体   English   中英

Mysql无法添加或更新子行:外键约束失败

[英]Mysql Cannot add or update a child row: a foreign key constraint fails

mysql表mysqltables

这是我向数据库插入数据的查询。

public void voegSpelerToe(Speler speler, String spelNaam)
{

    PreparedStatement invoerSpeler;
    Speler huidigeSpeler = null;
    try
    {

        Connection connection = PersistentieController.getInstance().getConnection();

        invoerSpeler = connection.prepareStatement("INSERT INTO Speler " + "(naam, kleur, sector, aantalZilverstukken, Spel_naam) " + "VALUES ( ?, ?,?, ?, ?)");


        invoerSpeler.setString(1, speler.getNaam());
        invoerSpeler.setString(2, speler.getKleur());
       invoerSpeler.setInt(3, speler.getSector().getCode());
        invoerSpeler.setInt(4,speler.getKrediet());
        invoerSpeler.setString(5, spelNaam);




        invoerSpeler.executeUpdate();


    } catch (SQLException sqlException)
    {
        sqlException.printStackTrace();
    } finally
    {
      //  PersistentieController.getInstance().closeConnection();
    }


}

一切都有价值,所以我没有nullexeption。

但是,当我要保存数据时,出现此错误:

com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot add or update a child row: a foreign key constraint fails (`projecteng62`.`speler`, CONSTRAINT `fk_Speler_Spel1` FOREIGN KEY (`Spel_naam`) REFERENCES `spel` (`naam`) ON DELETE CASCADE ON UPDATE CASCADE)

如何在外键中插入数据。 首先,它将数据保存到表Spel中,然后我需要将数据保存在表Speler中,但是使用外键出现问题。

像表游戏:

  1. naam:Game12
  2. aantalTeSPelenRondes:2

表Speler:

  1. naam:玩家1
  2. kleur:绿色
  3. 部门:2
  4. aantalZilverStukken:10

  5. Spel_Naam:game12 Spel_naam必须与表Spel中的naam相同

它告诉您,它期望Spel_Naam的内容在spels naam属性的某些行中存在,但不存在。

为了完全弄清问题,我还需要查看您要插入spel的位置。

但是在您提供的示例输入中

naam: Game12

Spel_Naam: game12

存在一个问题,因为一个大写而另一个不大写。 如果这实际上是数据的设置方式,则可能是您的问题。 但是看来您有正确的主意,您需要先插入naam,然后再插入Spel_Naam。

暂无
暂无

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

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