MySQLIntegrityConstraintViolationException、解決方法
本日、ユーザー削除を行った際、データベースのユーザーテーブルに、以下のように、初期状態では空でないと判断された状態フィールドが追加されました。
しかし、データ追加を行う際に、どうしても状態が追加できないので、状態を空でないものとして選択したいのですが、直接空でないことをチェックし始めると、次の画像のようにエラーボックスがポップアップしてしまいます。
私の ソリューション はい:まずフィールドの状態を削除し、次にフィールドの状態を追加します。
フィールドの状態を再追加すると、データテーブルのデータは次のようになります。
Javaのエンティティクラスとインターフェースも再生成されましたが(リバースエンジニアリングで生成しました)、実行時に以下のエラーが発生します。
Cause:
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException
: Column 'state' cannot be null
; SQL []; Column 'state' cannot be null; nested exception is
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException
: Column 'state' cannot be null] with root cause
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException
: Column 'state' cannot be null
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(
Native Method
)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(
NativeConstructorAccessorImpl.java:62
)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(
DelegatingConstructorAccessorImpl.java:45
)
at java.lang.reflect.Constructor.newInstance(
Constructor.java:423
)
at com.mysql.jdbc.Util.handleNewInstance(
Util.java:404
)
at com.mysql.jdbc.Util.getInstance(
Util.java:387
)
at com.mysql.jdbc.SQLError.createSQLException(
SQLError.java:932
)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(
MysqlIO.java:3878
)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(
MysqlIO.java:3814
)
at com.mysql.jdbc.MysqlIO.sendCommand(
MysqlIO.java:2478
)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(
MysqlIO.java:2625
)
at com.mysql.jdbc.ConnectionImpl.execSQL(
ConnectionImpl.java:2551
)
at com.mysql.jdbc.PreparedStatement.executeInternal(
PreparedStatement.java:1861
)
at com.mysql.jdbc.PreparedStatement.execute(
PreparedStatement.java:1192
)
at com.alibaba.druid.pool.DruidPooledPreparedStatement.execute(
DruidPooledPreparedStatement.java:494
)
at sun.reflect.NativeMethodAccessorImpl.invoke0(
Native Method
)
at sun.reflect.NativeMethodAccessorImpl.invoke(
NativeMethodAccessorImpl.java:62
)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(
DelegatingMethodAccessorImpl.java:43
)
at java.lang.reflect.Method.invoke(
Method.java:498
)
at org.apache.ibatis.logging.jdbc.PreparedStatementLogger.invoke(
PreparedStatementLogger.java:59
)
at com.sun.proxy.$Proxy42.execute(Unknown Source)
at org.apache.ibatis.executor.statement.PreparedStatementHandler.update(
PreparedStatementHandler.java:46
)
at org.apache.ibatis.executor.statement.RoutingStatementHandler.update(
RoutingStatementHandler.java:74
)
at org.apache.ibatis.executor.SimpleExecutor.doUpdate(
SimpleExecutor.java:50
)
at org.apache.ibatis.executor.BaseExecutor.update(
BaseExecutor.java:117
)
at org.apache.ibatis.executor.CachingExecutor.update(
CachingExecutor.java:76
)
at org.apache.ibatis.session.defaults.DefaultSqlSession.update(
DefaultSqlSession.java:198
)
at org.apache.ibatis.session.defaults.DefaultSqlSession.insert(
DefaultSqlSession.java:185
)
at sun.reflect.NativeMethodAccessorImpl.invoke0(
Native Method
)
at sun.reflect.NativeMethodAccessorImpl.invoke(
NativeMethodAccessorImpl.java:62
)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(
DelegatingMethodAccessorImpl.java:43
)
at java.lang.reflect.Method.invoke(
Method.java:498
)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(
SqlSessionTemplate.java:434
)
at com.sun.proxy.$Proxy20.insert(Unknown Source)
at org.mybatis.spring.SqlSessionTemplate.insert(
SqlSessionTemplate.java:279
)
at org.apache.ibatis.binding.MapperMethod.execute(
MapperMethod.java:57
)
at org.apache.ibatis.binding.MapperProxy.invoke(
MapperProxy.java:53
)
at com.sun.proxy.$Proxy23.insert(Unknown Source)
at com.edu118.user.UserService.insertUser(
UserService.java:41
)
at com.edu118.action.UserAction.addUser(
UserAction.java:118
)
at sun.reflect.NativeMethodAccessorImpl.invoke0(
Native Method
)
at sun.reflect.NativeMethodAccessorImpl.invoke(
NativeMethodAccessorImpl.java:62
)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(
DelegatingMethodAccessorImpl.java:43
)
at java.lang.reflect.Method.invoke(
Method.java:498
)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(
InvocableHandlerMethod.java:205
)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(
InvocableHandlerMethod.java:133
)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(
ServletInvocableHandlerMethod.java:97
)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(
RequestMappingHandlerAdapter.java:827
)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(
RequestMappingHandlerAdapter.java:738
)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(
AbstractHandlerMethodAdapter.java:85
)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(
DispatcherServlet.java:967
)
at org.springframework.web.servlet.DispatcherServlet.doService(
DispatcherServlet.java:901
)
at org.springframework.web.servlet.FrameworkServlet.processRequest(
FrameworkServlet.java:970
)
at org.springframework.web.servlet.FrameworkServlet.doPost(
FrameworkServlet.java:872
)
at javax.servlet.http.HttpServlet.service(
HttpServlet.java:647
)
at org.springframework.web.servlet.FrameworkServlet.service(
FrameworkServlet.java:846
)
at javax.servlet.http.HttpServlet.service(
HttpServlet.java:728
)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
ApplicationFilterChain.java:305
)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(
ApplicationFilterChain.java:210
)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(
CharacterEncodingFilter.java:197
)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(
OncePerRequestFilter.java:107
)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
ApplicationFilterChain.java:243
)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(
ApplicationFilterChain.java:210
)
at org.apache.catalina.core.StandardWrapperValve.invoke(
StandardWrapperValve.java:222
)
at org.apache.catalina.core.StandardContextValve.invoke(
StandardContextValve.java:123
)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(
AuthenticatorBase.java:502
)
at org.apache.catalina.core.StandardHostValve.invoke(
StandardHostValve.java:171
)
at org.apache.catalina.valves.ErrorReportValve.invoke(
ErrorReportValve.java:99
)
at org.apache.catalina.valves.AccessLogValve.invoke(
AccessLogValve.java:953
)
at org.apache.catalina.core.StandardEngineValve.invoke(
StandardEngineValve.java:118
)
at org.apache.catalina.connector.CoyoteAdapter.service(
CoyoteAdapter.java:408
)
at org.apache.coyote.http11.AbstractHttp11Processor.process(
AbstractHttp11Processor.java:1023
)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(
AbstractProtocol.java:589
)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(
JIoEndpoint.java:310
)
at java.util.concurrent.ThreadPoolExecutor.runWorker(
ThreadPoolExecutor.java:1142
)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(
ThreadPoolExecutor.java:617
)
at java.lang.Thread.run(
Thread.java:745
)
フィールドのstateが見つからないというエラーが出たので、書いたコードを確認したところ、jspファイルにstateが追加されていなかったので、hiddenフィールド(
)
<form class="form-horizontal" id="addUserForm">
<div class="form-group">
<label for="username" class="col-sm-2 control-label"> Username: </label>
<div class="col-sm-3">
<input type="text" class="form-control" id="username" name="username" placeholder="Please enter username">
</div>
<label class="control-label" id="usernameError" ></label>
</div>
<div class="form-group">
<label for="password" class="col-sm-2 control-label">User password: </label>
<div class="col-sm-3">
<input type="password" class="form-control" id="password" name="password" placeholder=" Please enter user password">
</div>
<label class="control-label" id="passwordError"></label>
</div>
<div class="form-group">
<label for="conPassword" class="col-sm-2 control-label"> Confirm password: </label>
<div class="col-sm-3">
<input type="password" class="form-control" id="conPassword" name="conPassword" placeholder= "Please enter your password again">
</div>
<label class="control-label" id="conPasswordError"></label>
</div>
<div class="form-group">
<label for="level" class="col-sm-2 control-label"> Permissions set: </label>
<div class="col-sm-3">
<select class="form-control" id="level" name="level">
<option value="">Please select permission</option>
<option value="0">Administrator</option>
<option value="1">Supervisor</option>
<option value="2">Warehouse clerk</option>
<option value="3">Supplier</option>
<option value="4">Customer</option>
</select>
</div>
<label class="control-label" id="levelError"></label>
</div>
<div class="form-group">
<label for="marks" class="col-sm-2 control-label"> User information description: </label>
<div class="col-sm-3"
その後、再実行すると、現在のユーザーがデータを追加でき、データベースのユーザーテーブルにデータが追加され、動作します。
関連
-
アクセス制限です。タイプ 'JPEGCodec' は API ではない ☞My Blog Github ☜ ホームページを見る
-
型に解決できない エラー解決
-
Solve モジュールのビルドに失敗しました。Error: ENOENT: no such file or directory エラー
-
Git Pull Failed マージされていないファイルがあるため、Pull できません。
-
スレッド "main" での例外 java.lang.ArrayIndexOutOfBoundsException:5 エラー
-
X11 DISPLAY変数が設定されていない」問題の解決方法
-
API の戻り値を処理するために ResponseEntity を使用する
-
eclipse にリソースリーク:'in' が閉じない
-
コンストラクタDate()が未定義である問題
-
switch case文のcaseの後の列挙定数は列挙型なし
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
undefined[sonar] sonar:デフォルトのスキャンルール
-
Collections.sortがdoubleでソートできない問題を完璧に解決する。
-
javaの非静的メソッドを静的に参照することができない
-
Java Notes 005_この行に複数のマーカーがある - キーを変数に解決できない - シンタックスエラー、ins
-
SocketException java.netの4つの例外解決策。
-
ジャバアレイ
-
List list = new ArrayList(); Error: ArrayList は型に解決できません。
-
Junitのユニットテストエラー
-
Java JDKのダイナミックプロキシ(AOP)の使用と実装の原理分析
-
WeChat小プログラム Bluetooth通信 Bluetoothモジュールデモ