繁体   English   中英

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

[英]java.sql.SQLException: Field 'supplier_id' doesn't have a default value

我收到一条错误信息:

 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

该错误是不言自明的。 您的列supplier_id ID 没有默认值。 所以在插入过程中,mysql 无法弄清楚要在列supplier_id插入什么。 您可以做以下三件事中的任何一件:-
1. 使用-为列supplier_id添加默认值

ALTER TABLE `xxx` ALTER `supplier_id` SET DEFAULT NULL


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

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

要解决此问题,请在INSERT时为supplier_id ID 提供一个值,或者使该列在数据库中可以为nullable

我添加了这个属性

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

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

可能有两种情况。

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

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

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

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

这是我解决它的方法:

alter table library modify column Id int NOT NULL AUTO_INCREMENT;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM