【问题标题】:java.sql.SQLException: Field 'id' doesn't have a default valuejava.sql.SQLException:字段“id”没有默认值
【发布时间】:2015-07-19 22:38:23
【问题描述】:

我正在尝试将数据插入到arrivaltimes 表中,但出现以下错误:

java.sql.SQLException: 字段 'id' 没有默认值

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

【问题讨论】:

  • 您在到达时间表中的列 id 是您的主键,请确保您在此列中插入一些值
  • 您可能希望在到达时间表中设置 id auto_increment。
  • @Don,你说得对,谢谢。现在可以了。

标签: java mysql sql tsql primary-key


【解决方案1】:

您在到达时间表中缺少 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) )" );

【讨论】:

    【解决方案2】:

    因为id 列定义为NOT NULL,这意味着它必须有一个值,而您没有提供一个值。

    【讨论】:

      【解决方案3】:

      我在 MySQL WorkBench 中的表遇到了同样的问题。显然,自动增量命令为字段“id”提供了默认值。这是适用于我的表的代码:

      create table product( <br>
      id int auto_increment PRIMARY KEY, <br>
      name varchar(20), <br>
      description varchar(100), <br>
      price decimal(8,3) <br>
      );
      
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-07-07
        • 2017-11-15
        • 2014-12-07
        • 2019-02-09
        • 2020-09-30
        • 1970-01-01
        • 2023-01-03
        • 2013-01-08
        相关资源
        最近更新 更多