web-dev-qa-db-ja.com

java.sql.SQLException:フィールド 'supplier_id'にはデフォルト値がありません

私はこれからエラーメッセージを受け取りました:

_ 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コードはエラー、トップタイトルのエラーコード)) of insert into xxx(name,password)values('xxx','xxx') is false; mysql jar is mysql-connector-Java-5.0.8

10
chendurex

エラーは自明です。列supplier_idにはデフォルト値がありません。そのため、挿入中、mysqlは列supplier_idに何を挿入するかを判断できません。次の3つのいずれかを実行できます。
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;
22
khandelwaldeval

これを解決するには、INSERTを実行するときにsupplier_idの値を指定するか、DBに列nullableを作成します。

2
peter.petrov

このプロパティを追加しました

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

私のために働いた

1
Deepak

2つの場合があります。

  1. 列のデフォルト値をNONEとして宣言しており、挿入中に値を渡していない。

  2. データベースで列を宣言しましたが、エンティティオブジェクトで同じ列を宣言していないため、エラーが発生しています。

1
K81094

Supplier_id列があるテーブルを使用しています。挿入時にこの列が値を取得しないデフォルト値はありません。 supplier_id列をデフォルト値で初期化するか、supplier_idを主キーとして使用している場合は自動インクリメントを使用します。

0