Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 虽然插入了右键,但外键约束失败_Mysql - Fatal编程技术网

Mysql 虽然插入了右键,但外键约束失败

Mysql 虽然插入了右键,但外键约束失败,mysql,Mysql,我刚开始使用SQL,这个问题是在运行我的文件时发生的。 表Artikel中的主键是artikelNr,表SHORKIMMENT有一个多键,即artikelNr和winkelNaam。我们已经在网上搜索过了,但没有找到任何有用的信息。提前谢谢 这是我们的Java SQL代码: public void addArtikel(String artikelNr, String artikelNaam, double prijs, double aantalBonuspunten, double aant

我刚开始使用SQL,这个问题是在运行我的文件时发生的。 表Artikel中的主键是artikelNr,表SHORKIMMENT有一个多键,即artikelNr和winkelNaam。我们已经在网上搜索过了,但没有找到任何有用的信息。提前谢谢

这是我们的Java SQL代码:

public void addArtikel(String artikelNr, String artikelNaam, double prijs, double aantalBonuspunten, double aantalBonuspuntenNodig,int  minAantalStuks, double minBedrag)
{
    Database db = new Database();
    Connection con = null;
    try
     {  
         con = db.getConnection();
        Statement stmt = con.createStatement();
        String sql = "INSERT INTO  Artikel\n" +"VALUES(‘" + artikelNr + "’, ‘" + artikelNaam + "’, " + prijs + ", " + aantalBonuspunten + ", " + aantalBonuspuntenNodig + ", " + minAantalStuks + "," + minBedrag + ");";
        stmt.executeUpdate(sql);
        con.close();
     }
     catch(Exception ex)
     {
         try { con.close(); } catch(Exception ex2){};
         System.out.println(ex.getMessage());
     }
}

public void addAssortiment(String artikelNr, String winkelNaam)
{
    Database db = new Database();
    Connection con = null;
    try
     {   
         con = db.getConnection();
        Statement stmt = con.createStatement();
        String sql = "INSERT INTO Assortiment\n" +"VALUES('" + artikelNr+ "', '" + winkelNaam + "');";
        stmt.executeUpdate(sql);
        con.close();
     }

     catch(Exception ex)
     {
         try { con.close(); } catch(Exception ex2){};
         System.out.println(ex.getMessage());
     }
}
这是我们的Java代码:

    public void artikelToevoegen(String winkelnaam)
    {
         String artikelNr = io.readString("Geef de barcode van het artikel dat u wilt toevoegen: ");
        while(artikelNr.length() != 13)
        {
            artikelNr = io.readString("Ongeldige barcode. Een barcode bestaat uit 13 karakters. Probeer opnieuw: ");
        }
        String naam = io.readString("Geef naam artikel");
        double prijs = io.readDouble("Geef prijs artikel");
        double aantalBonuspunten = io.readDouble("Geef het aantal punten per artikel (niet per euro van de prijs!)" + "\ndie men krijgt bij aankoop van het artikel (als de vereisten voldaan zijn)."
                + "\nDe punten moeten tussen 0,25 en 2 per euro van de prijs liggen." 
                +"\nIndien dit aantal 0 is typ null." 
                + "\nIndien het artikel niet aan deze vereisten voldoet, wordt het automatisch verwijderd.");
        int minAantalStuks = io.readInt("Geef het minimum aantal stuks dat gekocht moet worden van het artikel" +"\n eer men de bijhorende punten verkrijgt, indien er geen vereist aantal is typ 1");
        double aantalBonuspuntenNodig = io.readDouble("Geef het aantal punten per artikel (niet per euro van de prijs!) die nodig zijn om het artikel gratis te verkrijgen (indien aan de voorwaarden voldaan is)."
                + "\n De punten moeten tussen 0,25 en 2 per euro van de prijs liggen." + "\n Indien dit aantal 0 is typ null." + 
                "\n Indien het artikel niet aan deze vereisten voldoet, wordt het automatisch verwijderd.");
        double minBedrag = io.readDouble("Geef het minimum bedrag dat van het artikel aangekocht moet worden eer men het artikel met punten kan verkrijgen," + "\n indien er geen minimumbedrag is geef de eenheidsprijs."); 
        db.addArtikel(artikelNr, naam, prijs, aantalBonuspunten, aantalBonuspuntenNodig, minAantalStuks, minBedrag);
        db.addAssortiment(artikelNr, winkelnaam);
        int keuze = io.readInt("Wilt u nog een artikel toevoegen?" + 
                          "\n1)Ja" + "\n2)nee");
        while(keuze<1||keuze>2)
        {
            keuze = io.readInt("Ongeldige keuze, probeer opnieuw" + "\nWilt u nog een artikel toevoegen?" + 
                          "\n1)Ja" + "\n2)nee");
        }
        while(keuze != 2)
        {
            switch(keuze)
         {
            case 1: artikelToevoegen(winkelnaam);
                    break;

          }
        }

    }
public void artikeltovoegen(字符串winkelnaam)
{
String artikelNr=io.readString(“Geef de barcode van het artikel dat u wilt toevoegen:”);
while(artikelNr.length()!=13)
{
Artikernr=io.readString(“Ongeldige barcode.Een barcode bestaat uit 13 karakters.Probeer opnieuw:”);
}
字符串naam=io.readString(“Geef naam artikel”);
double prijs=io.readDouble(“Geef prijs artikel”);
double aantalBonuspunten=io.readDouble(“每件艺术品的价格(每欧元一美元!)”+“\n我要买一件艺术品(每件艺术品的价格)。”
+\nDe punten moeten tussen 0.25欧元/欧元
+“\nIndien dit aantal 0的类型为空。”
+“\n他是阿蒂克尔·尼特·阿恩·德兹·维雷斯滕·沃多特,他是自动的维杰德。”);
int MINANTALSTUKS=io.readInt(“如果最低安装尺寸为1号类型,则为1号类型”);
double aantalbonuspententennodig=io.readDouble(“每件艺术品的价格(每欧元一美元!))可以免费获得每件艺术品的价格(沃沃沃登·沃达安是印度的)。”
+“\n德普腾-莫腾-图森0,25 en 2/欧元面包车价格。”+“\n独立数据0为空值。”+
“\n他是一个艺术家,他是一个自动的艺术家。”);
double minBedrag=io.readDouble(“Geef het minimumbedrag dat van het artikel aangekocht moet worden eer het artikel遇到punten kan verkrijgen,”+“\n indien geen er geen minimumbedrag是Geef de eenheidsprijs.”);
db.addArtikel(Artikenr、naam、prijs、AANTALBONSPUNTEN、AANTALBONSPUNTENNODIG、Minantalstuks、minBedrag);
db.添加分类(Artikenr,winkelnaam);
int keuze=io.readInt(“你会不会不喜欢阿蒂克尔·托沃根?”+
“\n1)Ja”+“\n2)nee”);
while(keuze2)
{
keuze=io.readInt(“Ongeldige keuze,probeer opnieuw”+“\n你不喜欢artikel toevoegen吗?”+
“\n1)Ja”+“\n2)nee”);
}
while(keuze!=2)
{
开关(基兹)
{
案例1:artikelToevoegen(winkelnaam);
打破
}
}
}
这是我们的错误:

您的SQL语法有错误;在第2行的“1231”、“可乐罐”、“1.2、1.25、1,5.0”附近,查看与MySQL服务器版本对应的手册,以了解要使用的正确语法 无法添加或更新子行:外键约束失败(
BINFG21
schooldiment
,约束
schooldiment\u ibfk\u 3
外键(
artikelNr
)引用
Artikel
artikelNr
)在更新级联时删除级联) 您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解第3行“Delhaize”附近使用的正确语法


我还没有发现错误,但是请看一下SQL注入()和PreparedStatements。您的应用程序请求被攻击,只要输入一点点无效,它就会崩溃

Prepared语句也有助于避免这些难看的语法错误,因为它们具有更好的可读性

回到您的错误:看起来第一条语句失败了,第二条语句确实属于由于第一个错误而未插入的记录。
查看用于SQL的字符串变量的内容,并将其插入到诸如phpmyadmin之类的SQL工具中,以检查它是否可以执行。

能否发布解决方法?这将有助于其他人理解。出错的主要原因是Apotroph的差异。我们使用mack来实现,但是我们的程序不识别这种撇号。但是还有很多其他的错误。