21

I got an error message from this:

 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)

Everyone can help me ? my database fields are not empty . but i want to get this results:

insert into xxx(name,password)values('xxx','xxx'); and insert into xxx(name,password,man)values('xxx','xxx','xxx'); both success (both of that in client is success ,but in java code is error,error code at top title), instead of insert into xxx(name,password)values('xxx','xxx') is false; my mysql jar is mysql-connector-java-5.0.8

akash
  • 22,664
  • 11
  • 59
  • 87
chendurex
  • 313
  • 1
  • 2
  • 5
  • It means your supplier id doesn't have a default value, and you have to insert one. – Jhecht Oct 13 '14 at 09:18
  • The solution for a similar problem could be found in: http://stackoverflow.com/questions/804514/hibernate-field-id-doesnt-have-a-default-value#42484683 – Viktor Reinok Feb 27 '17 at 11:38

7 Answers7

32

The error is self explanatory. Your column supplier_id does not have a default value. So during insertion, mysql cannot figure out what to insert in the column supplier_id. You can do either of the three things :-
1. Add a default value to the column supplier_id Using -

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


2. Supply some value to the supplier_id column during insertion.
3. Add an auto increment to the column and add a primary key to it using the code :-

ALTER TABLE `xxx` CHANGE `supplier_id` `supplier_id` INT(10)AUTO_INCREMENT PRIMARY KEY;
Deval Khandelwal
  • 3,458
  • 1
  • 27
  • 38
4

To solve this, either supply a value for supplier_id when you do the INSERT, or make the column nullable in the DB.

peter.petrov
  • 38,363
  • 16
  • 94
  • 159
1

I added this property

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

into hibernate.cfg.xml file, and it worked for me.

Giorgi Tsiklauri
  • 9,715
  • 8
  • 45
  • 66
Deepak
  • 1,670
  • 1
  • 20
  • 20
  • This is very dangerous, it will drop all the existing tables and create new ones as blank tables to match our requirements. – Vipul Verma Apr 16 '22 at 11:41
1

There might be two cases.

  1. You have declared the column's default value as NONE and are not not passing any value to it while inserting.

  2. You have declared the column in database, but you have not declared the same in your entity object, which is causing the error.

K81094
  • 11
  • 1
1

This Error say Field has a Default value means it not to be auto incremental So first thing you do is,

go for Mysql and select Alter Table and check the Auto Increment

Even So, you Getting this Error Follow below instruction.

  • Sometimes changes made to the model or to the ORM may not reflect accurately on the database even after execution of SchemaUpdate. the error actually seems to lack a sensible explanation, try recreating the database or at least creating a new one and scaffolding it with SchemaExport
0

You are using table where you have supplier_id column . it does not have default value ,at insertion time this column not getting any value . initialize supplier_id column with some default value , or use auto increment if you are using supplier_id as a primary key.

praveen_programmer
  • 1,072
  • 11
  • 25
-1

In my case, the problem was that the primary key column was not set as AUTO_INCREMENT

Here's how I solved it:

alter table library modify column Id int NOT NULL AUTO_INCREMENT;
Julian
  • 33,915
  • 22
  • 119
  • 174
MKT2408
  • 1
  • 1