2010-11-15 8 views
0

Je rencontre des problèmes lors de la création de la table mySQL dans le programme Java. Je reçois constamment Impossible de créer la table ... errno: 150Erreur avec la clé étrangère

Voici mon code:

 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"); 

Je googlé de nombreux tutoriels pour créer la clé étrangère et j'ai encore des problèmes. Alors qu'est-ce que je fais mal?

Répondre

1

Vous avez probablement un problème avec les contraintes de clé étrangère, voir http://dev.mysql.com/doc/refman/5.1/en/innodb-foreign-key-constraints.html pour plus de détails.

premier est de vérifier si votre référence LOG_ID à T_AJPES_TR_LOG (ID_LOG) est correct

+0

Ok, j'ai découvert maintenant ce qui était problème. Je dois faire d'abord la table T_AJPES_TR_LOG puis la table TR_AJPES_TR. Alors maintenant la table TR_AJPES_TR se met à jour automatiquement? Ou je dois ajouter updateInt() dans le programme principal? – Igor

+0

À droite, c'était briser la contrainte FK parce que l'autre table n'était pas là, ça a du sens. Qu'entendez-vous automatiquement par mises à jour, qu'essayez-vous d'accomplir? –

+0

Je veux que cette clé étrangère soit écrite dans la deuxième table avec d'autres données importées. Est-ce qu'il écrit automatiquement dans la deuxième table ou dois-je ajouter une autre syntaxe? Je peux ajouter tout mon code? – Igor

Questions connexes