HTTPステータス 500 - An exception occurred processing JSP page /expense/Save.jsp at line 47
type 例外レポート
メッセージ An exception occurred processing JSP page /expense/Save.jsp at line 47
説明 The server encountered an internal error that prevented it from fulfilling this request.
例外
org.apache.jasper.JasperException: An exception occurred processing JSP page /expense/Save.jsp at line 47
44: mExpense.setTotal(mTotal);
45: mExpense.setMemo(request.getParameter("pMemo"));
46: mExpense.setEditSeq(Integer.parseInt(request.getParameter("pEditSeq")));
47: mExpense.save();
48: if(mExpense.getStatus()==Expense.STATUS_REMANDED
49: && mExpense.getUserId()==sUser.getId()){
50: mExpense.changeStatus(Expense.STATUS_HOLD);
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:567)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:454)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
原因
javax.servlet.ServletException: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'cDescription' in 'field list'
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:908)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:837)
org.apache.jsp.expense.Save_jsp._jspService(Save_jsp.java:341)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:431)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
【問題点】この例外を調べたところ
C:\JspPdf\SampleApp\JSP\WEB-INF\classes\Expense.javaに
bExpenseItem.fDescription = mRs.getString("cDescription");
という箇所があります。
しかし、C:\JspPdf\SampleApp\SQL\sample_app.sqlの
CREATE TABLE tExpenseItem(
cId INT AUTO_INCREMENT PRIMARY KEY,
cExpenseId INT,
cDate BIGINT,
cCategory INT,
cItem VARCHAR(255),
cAmount INT
);
には"cDescription"というフィールドは定義されていません。
これが例外発生の原因のようですがどのように対処したらよろしいでしょうか?
他のソースにも"cDescription"が使われていますので1か所ではないようです。
お忙しいところどうそよろしくお願いいたします。
type 例外レポート
メッセージ An exception occurred processing JSP page /expense/Save.jsp at line 47
説明 The server encountered an internal error that prevented it from fulfilling this request.
例外
org.apache.jasper.JasperException: An exception occurred processing JSP page /expense/Save.jsp at line 47
44: mExpense.setTotal(mTotal);
45: mExpense.setMemo(request.getParameter("pMemo"));
46: mExpense.setEditSeq(Integer.parseInt(request.getParameter("pEditSeq")));
47: mExpense.save();
48: if(mExpense.getStatus()==Expense.STATUS_REMANDED
49: && mExpense.getUserId()==sUser.getId()){
50: mExpense.changeStatus(Expense.STATUS_HOLD);
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:567)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:454)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
原因
javax.servlet.ServletException: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'cDescription' in 'field list'
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:908)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:837)
org.apache.jsp.expense.Save_jsp._jspService(Save_jsp.java:341)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:431)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
【問題点】この例外を調べたところ
C:\JspPdf\SampleApp\JSP\WEB-INF\classes\Expense.javaに
bExpenseItem.fDescription = mRs.getString("cDescription");
という箇所があります。
しかし、C:\JspPdf\SampleApp\SQL\sample_app.sqlの
CREATE TABLE tExpenseItem(
cId INT AUTO_INCREMENT PRIMARY KEY,
cExpenseId INT,
cDate BIGINT,
cCategory INT,
cItem VARCHAR(255),
cAmount INT
);
には"cDescription"というフィールドは定義されていません。
これが例外発生の原因のようですがどのように対処したらよろしいでしょうか?
他のソースにも"cDescription"が使われていますので1か所ではないようです。
お忙しいところどうそよろしくお願いいたします。
投稿:大原龍彦[oohara]/2015年 04月 01日 18時 37分
/更新:2015年 04月 01日 18時 39分
RE:経費精算・確認画面で保存を押すと例外が発生
by 竹形 誠司[takegata]
竹形です、こんにちは。
CD-ROMのコードを調べてみまた所、ご指摘の通り、cDescriptionの定義が抜けていますね、すみません。
mysqlにログインして USE dSampleApp でdSampleAppを選び、次のSQL文を入力してみてください。
正誤表に反映致します。
CD-ROMのコードを調べてみまた所、ご指摘の通り、cDescriptionの定義が抜けていますね、すみません。
mysqlにログインして USE dSampleApp でdSampleAppを選び、次のSQL文を入力してみてください。
ALTER TABLE tExpenseItem add cDescription varchar(255);
次のSQL文でテーブルの定義を見ることができます。show create table tExpenseItem;
次のようになっていればOKです。| tExpenseItem | CREATE TABLE `texpenseitem` (
`cId` int(11) NOT NULL AUTO_INCREMENT,
`cExpenseId` int(11) DEFAULT NULL,
`cDate` bigint(20) DEFAULT NULL,
`cCategory` int(11) DEFAULT NULL,
`cItem` varchar(255) DEFAULT NULL,
`cAmount` int(11) DEFAULT NULL,
`cDescription` varchar(255) DEFAULT NULL,
PRIMARY KEY (`cId`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
ご指摘ありがとうございました。`cId` int(11) NOT NULL AUTO_INCREMENT,
`cExpenseId` int(11) DEFAULT NULL,
`cDate` bigint(20) DEFAULT NULL,
`cCategory` int(11) DEFAULT NULL,
`cItem` varchar(255) DEFAULT NULL,
`cAmount` int(11) DEFAULT NULL,
`cDescription` varchar(255) DEFAULT NULL,
PRIMARY KEY (`cId`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
正誤表に反映致します。
投稿:竹形 誠司[takegata]/2015年 04月 01日 19時 08分
/更新:2015年 04月 01日 19時 08分