Невозможно добавить или обновить дочернюю строку: не удается выполнить ограничение внешнего ключа

Кто-нибудь знает, что не так с моим кодом? Я использую простой оператор INSERT ( в отличие от обычного PreparedStatement, потому что я пытаюсь использовать функции mySQL AES_ENCRYPT / DECRYPT. Я не знаю, как использовать их с обычной настройкой PreparedStatements. со всеми забавными вопросительными знаками.

Я продолжаю получать классический :

com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Невозможно добавить или обновить дочернюю строку: ограничение внешнего ключа не выполнено ( video_game_db . login , CONSTRAINT login_ibfk_1 FOREIGN KEY ( cust_ID ) ССЫЛКИ клиент ( cust_ID ))

Конечно, это сводит меня с ума.

Я провел всю ночь, пытаясь заставить работать обычную JDBC-реализацию шифрования. В конце концов, я смог только зашифровать строки, но не смог их расшифровать. Я подумал, что он должен что-то делать с mySQL, а не с JDBC, поскольку до того, как я ввел их в базу данных, они отлично расшифровали, но после этого я мог заставить ее работать.


Пожалуйста, взгляните на мои операторы DDL и DML для таблиц JDBC ниже:

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);
5
задан Mike 25 May 2011 в 15:15
поделиться