javax.servlet.ServletException: You have an error in your SQL syntax;

|

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% 믿을건 못되는 듯 하다.

And