HTTP Status 500 -
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '=5' at line 1 org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:535) org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:433) org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236) org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196) org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414) javax.servlet.http.HttpServlet.service(HttpServlet.java:689) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)
root cause
com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '=5' at line 1 com.mysql.jdbc.SQLError.createSQLException(SQLError.java:936) com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2941) com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1623) com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1715) com.mysql.jdbc.Connection.execSQL(Connection.java:3243) com.mysql.jdbc.Connection.execSQL(Connection.java:3172) com.mysql.jdbc.Statement.executeQuery(Statement.java:1197) org.apache.commons.dbcp.DelegatingStatement.executeQuery(DelegatingStatement.java:208) myclasses.BbsDAO.getArticle(BbsDAO.java:84) myclasses.BbsDAO.getArticle(BbsDAO.java:71) myclasses.BbsAction.execute(BbsAction.java:49) org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431) org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236) org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196) org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414) javax.servlet.http.HttpServlet.service(HttpServlet.java:689) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.17 logs.
mysql DB에서 rcount는 int(6)으로 되어있다.
그런데 DAO class 예제상의 코드에서는
long rcount = rs.getLong("rcount");
rs.updateLong("rcount", rcount+1);
이처럼 long형으로 처리하고 있다.
그래서 long->int로 바꾸었더니 자알~ 된다!
역시 책에 있는 예제라고 100% 믿을건 못되는 듯 하다.