- - PR -
NULLについて
1
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-12-16 16:04
NULLについて伺います。
現在、strutsで入力画面にて入力した内容がデータベース(MYSQL)に反映されるWEBアプリケーションを作っているのですが、Column 'title' cannot be nullとコンソールでエラーが出ており、「not nullでテーブルを作り直せばいいのかな」と思い、一旦テーブルを削除してからもう一度作り直したのですが、エラーが変わりません。何かしらご教授頂ければ幸いです。よろしくお願いいたします。下記にテーブル構造と、その下にエラーの全文を貼り付けておきます。 mysql> desc input; +--------------+---------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------------+---------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | title | text | NO | | NULL | | | movie_url | text | NO | | NULL | | | material_url | text | NO | | NULL | | | explanation | text | NO | | NULL | | +--------------+---------+------+-----+---------+----------------+ com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column 'title' cannot be null at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Unknown Source) at com.mysql.jdbc.Util.handleNewInstance(Util.java:406) at com.mysql.jdbc.Util.getInstance(Util.java:381) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1015) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3491) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3423) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1936) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2060) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2542) at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1734) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2019) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1937) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1922) at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:205) at asomanabi.DBManagement.addData(DBManagement.java:31) at asomanabi.DBMappingDispatchAction.insert(DBMappingDispatchAction.java:38) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:270) at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187) at org.apache.struts.actions.MappingDispatchAction.execute(MappingDispatchAction.java:169) at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431) at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196) at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432) at javax.servlet.http.HttpServlet.service(HttpServlet.java:647) at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:170) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:875) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689) at java.lang.Thread.run(Unknown Source) | ||||||||||||
|
投稿日時: 2008-12-16 16:20
最近使ってないものだから記憶が曖昧ですが、たしか、MySQLのtext型は、NULLを入れられない、という事だった(ような気がします)
defaultで、''でも入れてみるか、データが無いときでも必ず空きデータを入れるようにしてみるといいのではないでしょうか? | ||||||||||||
|
投稿日時: 2008-12-16 16:26
冬寂様
早速のご返信有難う御座います。
申し訳御座いません、具体的にどうすればよいのでしょうか?もう少し詳しく教えていただければ幸いです。お手数をおかけして大変申し訳御座いません。 | ||||||||||||
|
投稿日時: 2008-12-16 16:49
ん? null を許容しない列に null を突っ込もうとしたことによるエラーですよね。
そりゃエラーがなくなるわけがないですよね? not null なんだし。
| ||||||||||||
|
投稿日時: 2008-12-16 18:27
ご返信有難う御座います。
ん? null を許容しない列に null を突っ込もうとしたことによるエラーですよね。 ;;;; そうだったんですか。ご指摘有難う御座います。入力画面で入力したデータがデータベースに入らず、NULLが入っている時点でプログラム側がおかしいことがわかりました。有難う御座いました。 |
1