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

Posted

技术标签:

【中文标题】java.sql.SQLException:字段 \'supplier_id\' 没有默认值【英文标题】:java.sql.SQLException: Field 'supplier_id' doesn't have a default valuejava.sql.SQLException:字段 'supplier_id' 没有默认值 【发布时间】:2014-12-07 19:31:00 【问题描述】:

我从这里收到一条错误消息:

 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

【问题讨论】:

表示您的供应商id没有默认值,您必须插入一个。 类似问题的解决方法可以在:***.com/questions/804514/… 【参考方案1】:

错误是不言自明的。您的列 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;

【讨论】:

我的字段类型是 VARCHAR 并且不是 PRIMARY KEY ,有没有其他方法可以解决这个错误? 好的,所以第三个选项不适用。所以,选择第一个选项(推荐)。为列添加默认值 传递我在第一个选项中提到的sql查询,使supplier_id列的默认值为null【参考方案2】:

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

【讨论】:

【参考方案3】:

可能有两种情况。

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

    您已经在数据库中声明了该列,但您没有在实体对象中声明相同的列,这是导致错误的原因。

【讨论】:

【参考方案4】:

我添加了这个属性

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

进入hibernate.cfg.xml 文件,它对我有用。

【讨论】:

【参考方案5】:

您正在使用具有 supplier_id 列的表。它没有默认值,在插入时此列没有得到任何值。使用一些默认值初始化供应商 ID 列,或者如果您使用供应商 ID 作为主键,则使用自动增量。

【讨论】:

【参考方案6】:

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

我是这样解决的:

alter table library modify column Id int NOT NULL AUTO_INCREMENT;

【讨论】:

以上是关于java.sql.SQLException:字段 'supplier_id' 没有默认值的主要内容,如果未能解决你的问题,请参考以下文章

java.sql.SQLException: 数字溢出 的解决办法

java.sql.SQLException: Value '0000-00-00 00:00:00' can not be represented as java.sql.Date(示

java sql SQLException ORA-01861 文字和格式字符串不匹配

java.sql.SQLException:结果集开始之前[重复]

java.sql.SQLException: ORA-01861: 文字与格式字符串不匹配

java sql SQLException Invalid value for getInt -'zhangsan'