簡體   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