2010-11-04 9 views
8

Ho un'istanza di MySQL 5.0.4.1 con un'applicazione scritta in Hibernate. Su una delle pagine, viene visualizzato il seguente messaggio di errore nel registro del server:Indice di set di caratteri sconosciuto per il campo ricevuto dal server

Indice di set di caratteri sconosciuto per il campo "123" ricevuto dal server.
in com.mysql.jdbc.Connection.getCharsetNameForIndex (Connection.java:1664)
in com.mysql.jdbc.Field. (Field.java:144)
in com.mysql.jdbc.MysqlIO.unpackField (MysqlIO.java : 506)
a com.mysql.jdbc.MysqlIO.getResultSet (MysqlIO.java:280)
a com.mysql.jdbc.MysqlIO.sqlQueryDirect (MysqlIO.java:1319)
a com.mysql.jdbc.MysqlIO.sqlQuery (MysqlIO.java:1218)
in com.mysql.jdbc.Connection.execSQL (Connection.java:2233)
in com.mysql.jdbc.Connection.execSQL (Connection.java:2193)
in com.mysql.jdbc .Connection.execSQL (Connection.java:2174)
in com.mysql.jdbc.Connection.setAutoCommit (Connection.java:536)
in org.apache.commons.dbcp.DelegatingConnection.setAutoCommit (DelegatingConn ection.java:268)
a org.apache.commons.dbcp.PoolingDataSource $ PoolGuardConnectionWrapper.setAutoCommit (PoolingDataSource.java:293)
a org.hibernate.transaction.JDBCTransaction.toggleAutoCommit (JDBCTransaction.java:194)
a org. hibernate.transaction.JDBCTransaction.rollbackAndResetAutoCommit (JDBCTransaction.java:186)
a org.hibernate.transaction.JDBCTransaction.rollback (JDBCTransaction.java:162)
a org.springframework.orm.hibernate3.HibernateTransactionManager.doRollback (HibernateTransactionManager.java: 603)
in org.springframework.transaction.support.AbstractPlatformTransactionManager.processRollback (AbstractPlatformTransactionManager.java:579)
in org.springframework.transaction.support.AbstractPlatformTransactionManager.rollback (AbstractPlatformTransactionManager.java:556)
a org.springframework.transaction.interceptor.TransactionAspectSupport.doCloseTransactionAfterThrowing (TransactionAspectSupport.java:284)
a org.springframework.transaction.interceptor.TransactionInterceptor.invoke (TransactionInterceptor.java:100)
a org.springframework.aop.framework. ReflectiveMethodInvocation.proceed (ReflectiveMethodInvocation.java:170)
a org.acegisecurity.intercept.method.aopalliance.MethodSecurityInterceptor.invoke (MethodSecurityInterceptor.java:66)
a org.springframework.aop.framework.ReflectiveMethodInvocation.proceed (ReflectiveMethodInvocation.java: 170)
in org.acegisecurity.intercept.method.aopalliance.MethodSecurityInterceptor.invoke (MethodSecurityInterceptor.java:66)
in org.springframework.aop.framework.ReflectiveMethodInvocation.proceed (Reflecti veMethodInvocation.java:170)
a org.springframework.aop.framework.JdkDynamicAopProxy.invoke (JdkDynamicAopProxy.java:176)
a $ Proxy6.getDataFromDatabase (fonte sconosciuta)
a org.myCompany.myAction.load (fonte sconosciuta)
a sun.reflect.NativeMethodAccessorImpl.invoke0 (metodo natale)
a sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39)
a sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25)
a java.lang. reflect.Method.invoke (Method.java:324)
in org.apache.struts.actions.DispatchAction.dispatchMethod (DispatchAction.java:274)
in org.apache.struts.actions.DispatchAction.execute (DispatchAction.java: 194)
su org.apache.struts.action.R equestProcessor.processActionPerform (RequestProcessor.java:419)
in org.apache.struts.action.RequestProcessor.process (RequestProcessor.java:224)
in org.apache.struts.action.ActionServlet.process (ActionServlet.java:1196)
in org.apache.struts.action.ActionServlet.doGet (ActionServlet.java:414)
in javax.servlet.http.HttpServlet.servizio (HttpServlet.java:787)
all'indirizzo javax.servlet.http.HttpServlet.service (HttpServlet.java:908)
in org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:247)
presso org. apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:193)
in org.acegisecurity.util.FilterChainProxy $ VirtualFilterChain.doFilter (FilterChainProxy.java:264)
in org.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke (FilterSecurityInterceptor.java:107)
a org.acegisecurity.intercept.web.FilterSecurityInterceptor.doFilter (FilterSecurityInterceptor.java:72)
a org.acegisecurity.util.FilterChainProxy $ VirtualFilterChain.doFilter (FilterChainProxy.java:274)
a org. acegisecurity.ui.ExceptionTranslationFilter.doFilter (ExceptionTranslationFilter.java:110)
a org.acegisecurity.util.FilterChainProxy $ VirtualFilterChain.doFilter (FilterChainProxy.java:274)
a org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter (AnonymousProcessingFilter.java:125)
a org .acegisecurity.util.FilterChainProxy $ VirtualFilterChain.doFilter (FilterChainProxy.java:274)
a org.acegisecurity.ui.AbstractProcessingFilter.doFilter (AbstractProcessingFilter.java:217)
a org.acegisecurity.util.FilterChainProxy $ VirtualFilterChain.doFilter (FilterChainProxy .java: 274)
a org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter (HttpSessionContextIntegrationFilter.java:229)
a org.acegisecurity.util.FilterChainProxy $ VirtualFilterChain.doFilter (FilterChainProxy.java:274)
su org.acegisecurity.util.FilterChainProxy.doFilter (FilterChainProxy.java:148)
su org.acegisecurity.util.FilterToBeanProxy.doFilter (FilterToBeanProxy.java:98)
su org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:213)
in org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:193)
in org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve.java:280)
presso org. apache.catalina.core.StandardPipeline.invoke (StandardPipeline.java:509)
all'indirizzo org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve.java:218)
all'indirizzo org.apache.catalina.core.StandardPipeline.invoke (StandardPipeline.java:509)
all'indirizzo org.apache.catalina.core.StandardHostValve.invoke (StandardHos tValve.java:209)
su org.apache.catalina.core.StandardPipeline.invoke (StandardPipeline.java:509)
su com.iplanet.ias.web.connector.nsapi.NSAPIProcrocessore.processo (NSAPIProcrocessore.java:157)
a com.iplanet.ias.web.WebContainer.service (WebContainer.java:579)

Questo errore si verifica in un ambiente di produzione in modo da non so quale interrogazione ha prodotto il problema, ma so che nessuna delle mie tabelle ha una colonna chiamata '123'. Hai qualche suggerimento su cosa potrebbe causare questo problema?

Edit: Come un follow-up, ho trovato che questo comportamento è un known bug in MySQL 5.0.4, ma non ho trovato un buon wokaround dal momento che non ho la possibilità di aggiornare mySQL.

risposta

0

Potrebbe essere che in qualche modo il set di caratteri per il campo è stato impostato su un valore non valido, eseguire questo SQL sul server con il problema che sostituisce il nome della tabella e la colonna "Collation" mostrerà il set di caratteri per ogni varchar/char campi

SHOW FULL COLUMNS IN table_name; 

È quindi possibile modificare il set di caratteri di un campo utilizzando la seguente:

ALTER TABLE t MODIFY col1 VARCHAR(50) CHARACTER SET latin1; 
Problemi correlati