2011-01-12 3 views
0

Привет всем и извините заранее за этот пост, но я потратил слишком много времени на круги, поэтому я надеюсь, что кто-то может пролить свет на него здесь для меня. Я обновил webapp на Tomcat, и я получаю следующую ошибку, которая не существовала в предыдущей версии. Хотя я вполне уверен, что часть кода, которую я модифицировал, не виноват, поскольку я протестировал приложение на двух разных dev-серверах.Что вызывает исключение SQL-запроса Hibernate?

The production server is configured thus: CentOS 5.4 virtual server with tomcat 5.5.23 running mysql 5.0.77. 
The two dev servers are: Windows XP SP2 running tomcat 5.5.23 with mysql 5.1.49 
         Mac OSX 10.6.6 Running tomcat 6 with mysql 5.1.51 

Приложение было разработано с использованием распорок (1.1, насколько я могу собрать) с Hibernate 3 в качестве peristence слоя. Он только терпит неудачу на производственном сервере по какой-то причине, я не могу понять. Я хотел бы обратить ваше внимание на java.sql.SQLException у основания. После некоторого длительного поиска я нашел this, но поскольку он был опубликован много лет назад (около 1 года, прежде чем разработка началась в этом приложении, я уверен, что Hibernate развился из этой версии, так как я не могу найти способ реализовать его решение. Затмение Helios как IDE заранее спасибо, что нашли время, чтобы прочитать это, чтобы все, кто сумеет ответить

javax.servlet.ServletException: org.hibernate.exception.SQLGrammarException: could not execute query 
at fr.company.action.login.LoginAction.execute(LoginAction.java:219) 
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484) 
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274) 
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482) 
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) 
at fr.company.util.EncodingFilter.doFilter(EncodingFilter.java:37) 
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:210) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172) 
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525) 
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:151) 
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.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:113) 
at java.lang.Thread.run(Thread.java:636) 


javax.servlet.ServletException: org.hibernate.exception.SQLGrammarException: could not execute query 
at fr.company.action.login.LoginAction.execute(LoginAction.java:219) 
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484) 
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274) 
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482) 
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) 
at fr.company.util.EncodingFilter.doFilter(EncodingFilter.java:37) 
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:210) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172) 
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525) 
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:151) 
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.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:113) 
at java.lang.Thread.run(Thread.java:636) 
java.lang.Exception: org.hibernate.exception.SQLGrammarException: could not execute query 
at fr.company.dao.GenericDAO.findOne(GenericDAO.java:204) 
at fr.company.dao.UserDAO.findOneUser(UserDAO.java:146) 
at fr.company.service.UserPeer.logUser(UserPeer.java:72) 
at fr.company.action.login.LoginAction.execute(LoginAction.java:127) 
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484) 
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274) 
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482) 
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) 
at fr.company.util.EncodingFilter.doFilter(EncodingFilter.java:37) 
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:210) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172) 
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525) 
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:151) 
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.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:113) 
at java.lang.Thread.run(Thread.java:636) 
Caused by: org.hibernate.exception.SQLGrammarException: could not execute query 
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:65) 
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43) 
at org.hibernate.loader.Loader.doList(Loader.java:2153) 
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2029) 
at org.hibernate.loader.Loader.list(Loader.java:2024) 
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:369) 
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:300) 
at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:153) 
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1128) 
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79) 
at org.hibernate.impl.AbstractQueryImpl.uniqueResult(AbstractQueryImpl.java:749) 
at fr.company.dao.GenericDAO.findOne(GenericDAO.java:198) 
... 26 more 
Caused by: java.sql.SQLException: Unknown column 'user0_1_.poloSize' in 'field list' 
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2928) 
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1571) 
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1666) 
at com.mysql.jdbc.Connection.execSQL(Connection.java:2994) 
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:936) 
at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1030) 
at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeQuery(NewProxyPreparedStatement.java:76) 
at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:139) 
at org.hibernate.loader.Loader.getResultSet(Loader.java:1669) 
at org.hibernate.loader.Loader.doQuery(Loader.java:662) 
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224) 
at org.hibernate.loader.Loader.doList(Loader.java:2150) 
... 35 more 
+1

выполните с ' true' и дайте нам показанный запрос (в журналах или консоли), а также дайте сопоставление сущности – Bozho

+0

Свойство уже было добавлено. Однако я могу получить eclipse для вывода SQL-запросов. Не то, чтобы это имело значение, потому что на рабочем сервере нет инструментов разработчика, в которых возникает проблема. Серверы Dev отлично. –

ответ

1

сообщение об ошибке ядра говорит:

Unknown column 'user0_1_.poloSize' in 'field list' 

Как вы говорите

Это только сбой на производственном сервере

Возможно ли, что указанная выше колонка отсутствует в вашей производственной БД (пока она присутствует в БД, используемых для тестирования dev/интеграции)?

+0

, это часть SQL, которая была сгенерирована спящим режимом. скорее всего это проблема отображения/конфигурации. – Andrey

+0

Столбец необходим. Я не разработчик. Я просто искажаю код. Также обновленное приложение отлично работает на серверах разработки –

+0

@ Andrey, может быть ... с этим объемом информации, мы делаем только обоснованные догадки :-( –

0

Похоже, причина вашей проблемы здесь ..:..

Вызвано: java.sql.SQLException: Неизвестный столбец 'user0_1_.poloSize' в 'списке полей' at com.mysql.jdbc.MysqlIO.checkErrorPacket (MysqlIO.java:2928)

+1

Я знаю. Я так сказал в своем посте :) –

0

что-то с вашим HQL. попробуйте добавить в hibernate.cfg.xml

<property name="show_sql">true</property> 

и добавить SQL дамп размещать (и HQL)

+0

Я получаю это исключение только на удаленном сервере. У серверов-разработчиков нет такой же проблемы с приложением. Не говоря уже о том, что на рабочем сервере нет средств разработки. и я честно разбираюсь в спящем режиме, но я попытаюсь найти способ получить SQLdump –

Смежные вопросы