2015-05-08 3 views
0

я пытаюсь вставить данные в arrivaltimes таблицы, но я получаю следующее сообщение об ошибке:java.sql.SQLException: Поле «Идентификатор» не имеет значения по умолчанию

java.sql.SQLException: Field 'id' doesn't have a default value

stt.execute("CREATE TABLE IF NOT EXISTS stops" 
      + "(stop_id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, " 
      + " name varchar(30) NOT NULL, " 
      + " route INT(11) NOT NULL, " 
      + " lat double(10,6) NOT NULL, " 
      + " longi double(10,6)NOT NULL) "); 

    stt.execute("INSERT INTO stops(name, route, lat, longi) values" 
      + "('blabla', '1', '93.838039', '15.700440')," 
      + "('backery', '9', '98.868863', '19.665438')"); 

    stt.execute("CREATE TABLE IF NOT EXISTS arrivaltimes(id INT(11) NOT NULL PRIMARY KEY," 
      + " weekday VARCHAR(20) NOT NULL," 
      + "arrivaltime time NOT NULL," 
      + " stop_id INT, FOREIGN KEY fk_stop_id(stop_id) REFERENCES stops(stop_id))"); 
    //The error appears in this execution statement. 
    stt.execute("INSERT INTO arrivaltimes(weekday, arrivaltime) values" 
      + "('mon-fri', '05:30')," 
      + "('mon-fri', '06:07')"); 
+0

Вашего Идентификатора столбца в таблице arrivaltimes ваш первичный ключ, убедитесь, что вы вставляете какую-то ценность против этой колонки –

+0

Вы, вероятно, хотите сделать ID auto_increment в таблице arrivaltimes. –

+0

@ С уважением. он работает сейчас. – MrPencil

ответ

2

Вам не хватает AUTO INCREMENT для первичного ключа в таблице времени прибытия. Просто нужно добавить AUTO_INCREMENT при создании таблицы

stt.execute("CREATE TABLE IF NOT EXISTS arrivaltimes(id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY," 
      + " weekday VARCHAR(20) NOT NULL," 
      + "arrivaltime time NOT NULL," 
      + " stop_id INT, FOREIGN KEY fk_stop_id(stop_id) REFERENCES stops(stop_id))"); 
0

, так как столбец id определяется как NOT NULL, что означает, что он должен иметь значение, и вы его не предоставляете.

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