java - 无法添加或更新子行 : a foreign key constraint fails

标签 java mysql jdbc

有人知道我的代码有什么问题吗?我正在使用一个简单的 INSERT 语句(而不是常规的 PreparedStatement,因为我正在尝试利用 mySQL 的 AES_ENCRYPT/DECRYPT 函数。我不知道如何将它们与 PreparedStatements 的常规设置一起使用。所有时髦的问号。

我不断得到经典:

com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot add or update a child row: a foreign key constraint fails (video_game_db.login, CONSTRAINT login_ibfk_1 FOREIGN KEY (cust_ID) REFERENCES customer (cust_ID))

当然,这让我很抓狂。

我整晚都在努力使密码“东西”的常规 JDBC 实现正常工作。最后只能加密字符串,不能解密。我认为它必须用 mySQL 而不是 JDBC 做一些事情,因为在我将它们输入数据库之前它们解密得很好,但之后我可以让它工作。


请看下面我的JDBC表DDL和DML语句:

DDL

Statement s = conn.createStatement();
s.executeUpdate("CREATE TABLE customer("+"cust_ID CHAR(10) NOT NULL,"+"PRIMARY KEY(cust_ID),"+"first_Name CHAR(30)NOT NULL,mI CHAR(2),last_Name CHAR(50)NOT NULL,street_Name CHAR(50),city CHAR(30) NOT NULL,state CHAR(50) NOT NULL,"
            +"zip_Code CHAR(5) NOT NULL, home_Phone CHAR(12) UNIQUE, referrer CHAR(30), quantity INTEGER NOT NULL, item_No CHAR(10))"); 
s.executeUpdate("CREATE TABLE login ("+"user_Name CHAR(50) NOT NULL,"+"PRIMARY KEY(user_Name),"+"pass_Word CHAR(50)NOT NULL, cust_ID CHAR(10))");  

DML

public static void setCustTable(String cust_ID, String lName, String fName, String mI, String street_Name, String city, String state,
  String zip_Code, String home_Phone, String referrer, int quantity, String itemNo)throws IOException, SQLException 
{

// connect to database
try
{    

    PreparedStatement stat = conn.prepareStatement("INSERT INTO customer (cust_ID, first_Name, mI, last_Name, street_Name, city, state, zip_Code, home_Phone, referrer, quantity, item_No)"
                + " VALUES (?,?,?,?,?,?,?,?,?,?,?,?)");

    stat.setString(1, cust_ID);
    stat.setString(2, fName);
    stat.setString(3, mI);
    stat.setString(4, lName);
    stat.setString(5, street_Name);
    stat.setString(6, city);
    stat.setString(7, state);
    stat.setString(8, zip_Code);
    stat.setString(9, home_Phone);
    stat.setString(10, referrer);
    stat.setInt(11, quantity);
    stat.setString(12, itemNo);

    stat.executeUpdate();
}  

 catch (SQLException e) 
{
    e.printStackTrace();
    throw e;
}

**********************************************************************************



public static void insertLoginData(String username5, String password5, String custID5)throws IOException, SQLException, NoSuchAlgorithmException, InvalidKeyException

{
    Statement s = conn.createStatement();
    String insert="INSERT INTO login VALUES('username5', AES_ENCRYPT('text','password5'),'custID5')";
    s.executeUpdate(insert);

最佳答案

就其值(value)而言,我没有看到任何插入 customer 的内容。报错提示从登录到有外键约束 顾客。因此客户条目必须在登录插入之前存在。


是否有意引用“username5”?我认为它是方法的参数,但插入使用文字。

关于java - 无法添加或更新子行 : a foreign key constraint fails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6126514/

相关文章:

java - AsyncTask 不会改变其他变量的值

java - JRuby OJDBC,没有错误,但插入不显示?

java - 配置 JMX 导出器时 Kafka 无法启动

java - 图片上传 android Java + Asp.net (C#)

mysql - NodeJS+MySQL 而不是 PHP+MySQL。可以吗?

mysql - 无法通过 XAMPP 和 phpMyAdmin 访问 MySQL

grails - util.JDBCExceptionReporter值 '0000-00-00 00:00:00'不能表示为java.sql.Timestamp

java中的javascript逗号运算符

java - 通过jboss7 windows服务调用时user.home目录被更改

javascript - 组织的用户限制