2010-11-15 2 views
0

У меня возникли проблемы с созданием таблицы mySQL в программе Java. Я постоянно получать не удается создать таблицу ... ERRNO: 150Ошибка с внешним ключом

Вот мой код:

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

Я гугле много учебников для создания внешнего ключа, и я до сих пор есть проблемы. Так что я делаю неправильно?

ответ

1

У вас наверняка возникла проблема с ограничениями внешнего ключа, см. http://dev.mysql.com/doc/refman/5.1/en/innodb-foreign-key-constraints.html для получения более подробной информации.

Сначала один, чтобы проверить, правильно ли

+0

Ok ваша ссылка LOG_ID к T_AJPES_TR_LOG (ID_LOG), я выяснил, что теперь была проблема. Сначала я должен сделать таблицу T_AJPES_TR_LOG, затем таблицу TR_AJPES_TR. Итак, теперь таблица TR_AJPES_TR обновляется автоматически? Или мне нужно добавить updateInt() в основной программе? – Igor

+0

Правильно, это нарушало ограничение FK, потому что другой таблицы там не было, имеет смысл. Что вы подразумеваете под обновлением автоматически, чего вы пытаетесь достичь? –

+0

Я хочу, чтобы этот внешний ключ был записан во второй таблице вместе с другими импортированными данными. Он записывается во вторую таблицу автоматически или мне нужно добавить другой синтаксис? Я могу добавить весь код? – Igor

Смежные вопросы