- PR -

NULLについて

1
投稿者投稿内容
とろ
会議室デビュー日: 2008/07/04
投稿数: 12
投稿日時: 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)
冬寂
ぬし
会議室デビュー日: 2002/09/17
投稿数: 449
投稿日時: 2008-12-16 16:20
最近使ってないものだから記憶が曖昧ですが、たしか、MySQLのtext型は、NULLを入れられない、という事だった(ような気がします)

defaultで、''でも入れてみるか、データが無いときでも必ず空きデータを入れるようにしてみるといいのではないでしょうか?
とろ
会議室デビュー日: 2008/07/04
投稿数: 12
投稿日時: 2008-12-16 16:26
冬寂様

早速のご返信有難う御座います。

引用:

冬寂さんの書き込み (2008-12-16 16:20) より:
最近使ってないものだから記憶が曖昧ですが、たしか、MySQLのtext型は、NULLを入れられない、という事だった(ような気がします)

defaultで、''でも入れてみるか、データが無いときでも必ず空きデータを入れるようにしてみるといいのではないでしょうか?



申し訳御座いません、具体的にどうすればよいのでしょうか?もう少し詳しく教えていただければ幸いです。お手数をおかけして大変申し訳御座いません。
rain
ぬし
会議室デビュー日: 2006/10/19
投稿数: 549
投稿日時: 2008-12-16 16:49
引用:

とろさんの書き込み (2008-12-16 16:04) より:
NULLについて伺います。

現在、strutsで入力画面にて入力した内容がデータベース(MYSQL)に反映されるWEBアプリケーションを作っているのですが、Column 'title' cannot be nullとコンソールでエラーが出ており、


ん?
null を許容しない列に null を突っ込もうとしたことによるエラーですよね。

引用:

「not 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    |                |
+--------------+---------+------+-----+---------+----------------+

とろ
会議室デビュー日: 2008/07/04
投稿数: 12
投稿日時: 2008-12-16 18:27
ご返信有難う御座います。

引用:

とろさんの書き込み (2008-12-16 16:04) より:
NULLについて伺います。

現在、strutsで入力画面にて入力した内容がデータベース(MYSQL)に反映されるWEBアプリケーションを作っているのですが、Column 'title' cannot be nullとコンソールでエラーが出ており、


ん?
null を許容しない列に null を突っ込もうとしたことによるエラーですよね。

;;;;

そうだったんですか。ご指摘有難う御座います。入力画面で入力したデータがデータベースに入らず、NULLが入っている時点でプログラム側がおかしいことがわかりました。有難う御座いました。
1

スキルアップ/キャリアアップ(JOB@IT)