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

时间:2014-10-13 09:16:10

标签: java mysql sql

我收到了一条错误消息:

 java.sql.SQLException: Field 'supplier_id' doesn't have a default value
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:946)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2985)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1631)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1723)
    at com.mysql.jdbc.Connection.execSQL(Connection.java:3277)
    at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1402)
    at com.mysql.jdbc.Statement.executeUpdate(Statement.java:1317)

每个人都可以帮助我吗? 我的数据库字段不为空。 但我希望得到这样的结果:

insert into xxx(name,password)values('xxx','xxx');insert into xxx(name,password,man)values('xxx','xxx','xxx'); 两次成功(两者都在客户端成功,但在java代码中是错误,错误代码在顶部标题),而不是insert into xxx(name,password)values('xxx','xxx')是假的; 我的mysql jar是mysql-connector-java-5.0.8

6 个答案:

答案 0 :(得分:18)

错误是不言自明的。您的列supplier_id没有默认值。因此在插入期间,mysql无法确定要在列supplier_id中插入的内容。你可以做以下三件事之一: - 1.使用 -

向列supplier_id添加默认值
ALTER TABLE `xxx` ALTER `supplier_id` SET DEFAULT NULL


2.在插入期间为supplier_id列提供一些值。
3.向列添加自动增量,并使用以下代码向其添加主键: -

ALTER TABLE `xxx` CHANGE `supplier_id` `supplier_id` INT(10)AUTO_INCREMENT PRIMARY KEY;

答案 1 :(得分:2)

要解决此问题,请在执行supplier_id时为INSERT提供值,或在数据库中创建列nullable

答案 2 :(得分:1)

添加了此属性

<property name="hbm2ddl.auto">create</property>.

为我工作

答案 3 :(得分:0)

您正在使用包含supplier_id列的表。它没有默认值,在插入时此列没有获得任何值。使用某个默认值初始化supplier_id列,或者如果使用supplier_id作为主键,则使用自动增量。

答案 4 :(得分:0)

可能有两种情况。

  1. 您已将列的默认值声明为NONE,并且在插入时未将任何值传递给它。

  2. 您已在数据库中声明了该列,但您未在实体对象中声明相同的内容,这会导致错误。

答案 5 :(得分:0)

就我而言,问题在于主键列未设置为AUTO_INCREMENT

这是我解决的方法:

alter table library modify column Id int NOT NULL AUTO_INCREMENT;