我收到了一条错误消息:
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
答案 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)
可能有两种情况。
您已将列的默认值声明为NONE,并且在插入时未将任何值传递给它。
您已在数据库中声明了该列,但您未在实体对象中声明相同的内容,这会导致错误。
答案 5 :(得分:0)
就我而言,问题在于主键列未设置为AUTO_INCREMENT
这是我解决的方法:
alter table library modify column Id int NOT NULL AUTO_INCREMENT;