2010-11-04 8 views
8

我有一個使用Hibernate編寫的應用程序的MySQL 5.0.4.1實例。在其中一頁上,我在服務器日誌中收到以下錯誤消息:從服務器接收的字段的未知字符集索引

從服務器收到的字段'123'的未知字符集索引。
at com.mysql.jdbc.Connection.getCharsetNameForIndex(Connection.java:1664)
at com.mysql.jdbc.Field。(Field.java:144)
at com.mysql.jdbc.MysqlIO.unpackField(MysqlIO.java :506)
at com.mysql.jdbc.MysqlIO.getResultSet(MysqlIO.java:280)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1319)
at com.mysql.jdbc.MysqlIO.sqlQuery在com.mysql.jdbc(MysqlIO.java:1218)
在com.mysql.jdbc.Connection.execSQL(Connection.java:2233)
在com.mysql.jdbc.Connection.execSQL(Connection.java:2193)
.Connection.execSQL(Connection.java:2174)
at com.mysql.jdbc.Connection.setAutoCommit(Connection.java:536)
at org.apache.commons.dbcp.DelegatingConnection.setAutoCommit(DelegatingConn org.apache.commons.dbcp.PoolingDataSource $ PoolGuardConnectionWrapper.setAutoCommit(PoolingDataSource.java:293)
at org.hibernate.transaction.JDBCTransaction.toggleAutoCommit(JDBCTransaction.java:194)
at org。 hibernate.transaction.JDBCTransaction.rollbackAndResetAutoCommit(JDBCTransaction.java:186)
at org.hibernate.transaction.JDBCTransaction.rollback(JDBCTransaction.java:162)
at org.springframework.orm.hibernate3.HibernateTransactionManager.doRollback(HibernateTransactionManager.java: (AbstractPlatformTransactionManager.java:556)
在org.springframework.transaction.interceptor.TransactionAspectSupport.doCloseTransactionAfterThrowing(TransactionAspectSupport.java:284)
在org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:100)
在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)
at org.acegisecurity.intercept.method.aopalliance.MethodSecurityInterceptor.invoke(MethodSecurityInterceptor.java:66)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(Reflecti veMethodInvocation.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中。反應。方法.invoke(Method.java:324)
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:274)
at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java: 194)
at org.apache.struts.action.R equestProcessor.processActionPerform(RequestProcessor.java:419)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
at javax.servlet.http.HttpServlet。(org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org。 apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.acegisecurity.util.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:264)
at org.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke( FilterSecurityInterceptor.java:107)
在org.acegisecurity.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:72)
在org.acegisecurity.util.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:274)
的組織。 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)
在組織.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)
at org.acegisecurity.util.FilterChainProxy.doFilter(FilterChainProxy.java:148)
at org.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:98)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(在org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:280)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
。在org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:509)
at org.apache.catalina.core.StandardContextValve StandardPipeline.java:509)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHos tValve.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.service(WebContainer.java:579)

在生產環境中會出現此錯誤,所以我不知道哪個查詢產生的問題做的,但我知道,我的表格都沒有名爲'123'的列。你有什麼建議可能會導致這個問題?

編輯:作爲後續,我發現,這種行爲是一種known bug in MySQL 5.0.4,但我還沒有找到一個很好的wokaround,因爲我沒有升級MySQL的選項。

回答

0

會不會是莫名其妙的字段設置的字符已經被設置爲無效值,運行與替換表名和列「整理」問題在服務器上的SQL語句將顯示每個VARCHAR /字符的字符集田

SHOW FULL COLUMNS IN table_name; 

然後,您可以通過以下更改字符集的字段:

ALTER TABLE t MODIFY col1 VARCHAR(50) CHARACTER SET latin1; 
相關問題