私はこれからエラーメッセージを受け取りました:
_ 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
エラーは自明です。列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;
これを解決するには、INSERT
を実行するときにsupplier_id
の値を指定するか、DBに列nullable
を作成します。
このプロパティを追加しました
<property name="hbm2ddl.auto">create</property>.
私のために働いた
2つの場合があります。
列のデフォルト値をNONEとして宣言しており、挿入中に値を渡していない。
データベースで列を宣言しましたが、エンティティオブジェクトで同じ列を宣言していないため、エラーが発生しています。
Supplier_id列があるテーブルを使用しています。挿入時にこの列が値を取得しないデフォルト値はありません。 supplier_id列をデフォルト値で初期化するか、supplier_idを主キーとして使用している場合は自動インクリメントを使用します。