【发布时间】:2011-05-05 04:31:19
【问题描述】:
我有一个 MySQL 5.0.4.1 实例,其中有一个用 Hibernate 编写的应用程序。在其中一个页面上,我在服务器日志中收到以下错误消息:
从服务器收到的字段“123”的未知字符集索引。
在 com.mysql.jdbc.Connection.getCharsetNameForIndex(Connection.java:1664)
在 com.mysql.jdbc.Field.(Field .java:144)
在 com.mysql.jdbc.MysqlIO.unpackField(MysqlIO.java:506)
在 com.mysql.jdbc.MysqlIO.getResultSet(MysqlIO.java:280)
在 com .mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1319)
在 com.mysql.jdbc.MysqlIO.sqlQuery(MysqlIO.java:1218)
在 com.mysql.jdbc.Connection.execSQL(Connection .java:2233)
在 com.mysql.jdbc.Connection.execSQL(Connection.java:2193)
在 com.mysql.jdbc.Connection.execSQL(Connection.java:2174)
在 com .mysql.jdbc.Connection.setAutoCommit(Connection.java:536)
在 org.apache.commons.dbcp.DelegatingConnection.setAutoCommit(DelegatingConnection.java:268)
在 org.apache.commons.dbcp.PoolingDataSource $PoolGuardConnectionWrapper.setAutoCommit(PoolingDataSource.java:293)
在 org.hibernate.transaction.JDBCTransaction.toggleAutoCommit(JDBCTransaction.java:194)
在 org.hibe rnate.transaction.JDBCTransaction.rollbackAndResetAutoCommit(JDBCTransaction.java:186)
在 org.hibernate.transaction.JDBCTransaction.rollback(JDBCTransaction.java:162)
在 org.springframework.orm.hibernate3.HibernateTransactionManager.doRollback( HibernateTransactionManager.java:603)
在 org.springframework.transaction.support.AbstractPlatformTransactionManager.processRollback(AbstractPlatformTransactionManager.java:579)
在 org.springframework.transaction.support.AbstractPlatformTransactionManager.rollback(AbstractPlatformTransactionManager.java:556)
在 org.springframework.transaction.interceptor.TransactionAspectSupport.doCloseTransactionAfterThrowing(TransactionAspectSupport.java:284)
在 org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:100)
在 org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:100) springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:170)
在 org.acegisecurity.intercept.method.aopalliance.MethodSecurityI nterceptor.invoke(MethodSecurityInterceptor.java:66)
在 org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:170)
在 org.acegisecurity.intercept.method.aopalliance.MethodSecurityInterceptor.invoke( MethodSecurityInterceptor.java:66)
在 org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:170)
在 org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:176)
在 $Proxy6.getDataFromDatabase(未知来源)
在 org.myCompany.myAction.load(未知来源)
在 sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)
在 sun.reflect。 NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
在 java.lang.reflect.Method.invoke(Method.java:324)
>在 org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:274)
在 org.apache.struts .actions.DispatchAction.execute(DispatchAction.java:194)
在 org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
在 org.apache.struts.action.RequestProcessor.process (RequestProcessor.java:224)
在 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:787)
在 javax.servlet.http.HttpServlet.service(HttpServlet.java:908)
在 org.apache.catalina .core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
在 org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter (FilterChainProxy.java:264)
在 org.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:107)
在 org.acegisecurity.intercept.web.FilterSecurityInterceptor.doFil ter(FilterSecurityInterceptor.java:72)
在 org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
在 org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:110)
在 org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
在 org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
在 org. acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
在 org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:217)
在 org.acegisecurity.util.FilterChainProxy$VirtualFilterChain。 doFilter(FilterChainProxy.java:274)
在 org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:229)
在 org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
在 org.acegisecurit y.util.FilterChainProxy.doFilter(FilterChainProxy.java:148)
在 org.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:98)
在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter( ApplicationFilterChain.java:213)
在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:280)
在 org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:509)
在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:218)
在 org. apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:509)
在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:209)
在 org.apache.catalina.core。 StandardPipeline.invoke(StandardPipeline.java:509)
在 com.iplanet.ias.web.connector.nsapi.NSAPIProcessor.process(NSAPIProcessor.java:157)
在 com.iplanet.ias.web.WebContainer。服务(网络包含er.java:579)
此错误发生在生产环境中,因此我不知道是哪个查询产生了问题,但我知道我的所有表都没有名为“123”的列。您对可能导致此问题的原因有什么建议吗?
编辑:作为后续,我发现此行为是 known bug in MySQL 5.0.4,但我没有找到好的解决方法,因为我没有升级 mySQL 的选项。
【问题讨论】:
-
不能升级MySQL,但可以降级吗?错误报告表明使用 5.0.3 而不是 5.0.4 应该可以避免该问题。