Errore con chiave esterna
-
10-10-2019 - |
Domanda
sto avendo problemi con la creazione di tabella MySQL all'interno di programma Java. Ricevo constantemente Can non crea tabella ... errno: 150
Ecco il mio codice:
String URL="jdbc:mysql://192.168.1.128:3306";
Connection con=(Connection) DriverManager.getConnection(URL,user,pass);
Statement stmt=(Statement) con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
Statement stmt1=(Statement) con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
String mySQL_new_table=("CREATE TABLE IF NOT EXISTS dbtest.T_AJPES_TR " + "(" + "row_count INT PRIMARY KEY AUTO_INCREMENT,"
+ "rn CHAR(15),sSpre CHAR(5),reg CHAR(5),eno VARCHAR(10),davcna VARCHAR(15),Ime VARCHAR(75),Priimek VARCHAR(75),LOG_ID INT,INDEX L_ID (LOG_ID),FOREIGN KEY(LOG_ID) references T_AJPES_TR_LOG(ID_LOG) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE = INNODB;");
String mySQL_log = ("CREATE TABLE IF NOT EXISTS dbtest.T_AJPES_TR_LOG" + "(ID_LOG INT PRIMARY KEY AUTO_INCREMENT, Date_import VARCHAR(45),File_import VARCHAR(75)) ENGINE = INNODB;");
stmt.executeUpdate(mySQL_new_table);
stmt1.executeUpdate(mySQL_log);
ResultSet uprs=stmt.executeQuery("SELECT * FROM dbtest.T_AJPES_TR");
ResultSet uprs1=stmt1.executeQuery("SELECT * FROM dbtest.T_AJPES_TR_LOG");
I Googled molti tutorial per la creazione di chiave esterna e ho ancora dei problemi. Quindi quello che sto facendo male?
Soluzione
Probabilmente avete avuto un problema con i vincoli di chiave esterna, vedere http://dev.mysql.com/doc/refman/5.1/en/innodb-foreign-key-constraints.html per maggiori dettagli.
Il primo che verifica è se il LOG_ID riferimento alla T_AJPES_TR_LOG (ID_LOG) è corretto
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow