WebSphere software 部署xxl-job的过程中,遇到了这个问题,DB2数据库,以下三种情况都有可能出现,希望大家主要排查驱动的问题,也就是jcc包的问题,我的部署环境有多个不同版本的jcc包,有冲突,清除不必要的包就可以了。我被这个问题困扰了一周,已经快要绝望了,好在有一个大佬帮我排查解决了。
====================================== 情况1 ============================================
org.springframework.dao.DataIntegrityViolationException:
### Error querying database. Cause: com.ibm.db2.jcc.am.SqlDataException: [jcc][t4][10275][10041][4.16.53] Unsupported ccsid, encoding, or locale: "Cp1386". ERRORCODE=-4220, SQLSTATE=22021
### The error may exist in file [/was/IBM/WebSphere/AppServer/profiles/AppSrv01/installedApps/edwwasbdmgrCell01/xxl-job-admin-extend_war.ear/xxl-job-admin-extend.war/WEB-INF/classes/mybatis-mapper/XxlJobGroupMapper.xml]
### The error may involve com.xxl.job.admin.dao.XxlJobGroupDao.findByAddressType
### The error occurred while handling results
### SQL: SELECT t.id, t.app_name, t.title, t.address_type, t.address_list, t.update_time FROM xxl_job_group t WHERE t.address_type = ? ORDER BY t.app_name, t.title, t.id ASC
### Cause: com.ibm.db2.jcc.am.SqlDataException: [jcc][t4][10275][10041][4.16.53] Unsupported ccsid, encoding, or locale: "Cp1386". ERRORCODE=-4220, SQLSTATE=22021
; [jcc][t4][10275][10041][4.16.53] Unsupported ccsid, encoding, or locale: "Cp1386". ERRORCODE=-4220, SQLSTATE=22021; nested exception is com.ibm.db2.jcc.am.SqlDataException: [jcc][t4][10275][10041][4.16.53] Unsupported ccsid, encoding, or locale: "Cp1386". ERRORCODE=-4220, SQLSTATE=22021
at org.springframework.jdbc.support.SQLExceptionSubclassTranslator.doTranslate(SQLExceptionSubclassTranslator.java:84)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81)
at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:88)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:440)
at com.sun.proxy.$Proxy3815.selectList(Unknown Source)
at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:223)
at org.apache.ibatis.binding.MapperMethod.executeForMany(MapperMethod.java:147)
at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:80)
at org.apache.ibatis.binding.MapperProxy$PlainMethodInvoker.invoke(MapperProxy.java:152)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:85)
at com.sun.proxy.$Proxy3816.findByAddressType(Unknown Source)
at com.xxl.job.admin.core.thread.JobRegistryHelper$3.run(JobRegistryHelper.java:62)
at java.lang.Thread.run(Thread.java:812)
Caused by: com.ibm.db2.jcc.am.SqlDataException: [jcc][t4][10275][10041][4.16.53] Unsupported ccsid, encoding, or locale: "Cp1386". ERRORCODE=-4220, SQLSTATE=22021
at com.ibm.db2.jcc.am.fd.a(fd.java:731)
at com.ibm.db2.jcc.am.fd.a(fd.java:60)
at com.ibm.db2.jcc.am.fd.a(fd.java:85)
at com.ibm.db2.jcc.am.Agent.getByteToCharConverter(Agent.java:481)
at com.ibm.db2.jcc.t4.ec.a(ec.java:2380)
at com.ibm.db2.jcc.t4.ab.a(ab.java:3513)
at com.ibm.db2.jcc.t4.ab.a(ab.java:1966)
at com.ibm.db2.jcc.t4.ab.a(ab.java:1891)
at com.ibm.db2.jcc.t4.ab.n(ab.java:827)
at com.ibm.db2.jcc.t4.ab.j(ab.java:254)
at com.ibm.db2.jcc.t4.ab.d(ab.java:55)
at com.ibm.db2.jcc.t4.o.c(o.java:44)
at com.ibm.db2.jcc.t4.tb.j(tb.java:157)
at com.ibm.db2.jcc.am.to.mb(to.java:2214)
at com.ibm.db2.jcc.am.uo.b(uo.java:4513)
at com.ibm.db2.jcc.am.uo.mc(uo.java:2833)
at com.ibm.db2.jcc.am.uo.execute(uo.java:2808)
at com.zaxxer.hikari.pool.ProxyPreparedStatement.execute(ProxyPreparedStatement.java:44)
at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.execute(HikariProxyPreparedStatement.java)
at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:64)
at org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:79)
at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:63)
at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:325)
at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156)
at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109)
at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:89)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:147)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:140)
at sun.reflect.GeneratedMethodAccessor1915.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
at java.lang.reflect.Method.invoke(Method.java:508)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:426)
... 9 common frames omitted
Caused by: java.io.UnsupportedEncodingException: GBK
at sun.io.Converters.getConverterClass(Converters.java:319)
at sun.io.Converters.newConverter(Converters.java:373)
at sun.io.ByteToCharConverter.getConverter(ByteToCharConverter.java:98)
at com.ibm.db2.jcc.am.r.<init>(r.java:10)
at com.ibm.db2.jcc.am.p.a(p.java:10)
at com.ibm.db2.jcc.am.Agent.getByteToCharConverter(Agent.java:477)
... 37 common frames omitted
======================================= 情况2 ==============================================
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException:
### Error querying database. Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLRecoverableException: IO Error: The Network Adapter could not establish the connection
### The error may exist in file [/was/IBM/WebSphere/AppServer/profiles/AppSrv01/installedApps/edwwasbdmgrCell01/xxl-job-admin-extend_war.ear/xxl-job-admin-extend.war/WEB-INF/classes/mybatis-mapper/XxlJobUserMapper.xml]
### The error may involve com.xxl.job.admin.dao.XxlJobUserDao.loadByUserName
### The error occurred while executing a query
### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLRecoverableException: IO Error: The Network Adapter could not establish the connection
============================================ 情况3 =========================================
在节点 edwwasb01Node01 上的服务器 DGPserver 上,对数据源 DGPDataSource 执行的测试连接操作由于以下异常 java.sql.SQLInvalidAuthorizationSpecException: [jcc][t4][2013][11249][4.25.23] Connection authorization failure occurred. Reason: User ID or Password invalid. ERRORCODE=-4214, SQLSTATE=28000 DSRA0010E: SQL State = 28000, Error Code = -4,214 而失败。 查看 JVM 日志 获取进一步的详细信息。
org.springframework.jdbc.BadSqlGrammarException:
### Error querying database. Cause: com.ibm.db2.jcc.am.SqlSyntaxErrorException: DB2 SQL Error: SQLCODE=-204, SQLSTATE=42704, SQLERRMC=DGPUSER.XXL_JOB_USER, DRIVER=3.68.61
### The error may exist in file [/was/IBM/WebSphere/AppServer/profiles/AppSrv01/installedApps/edwwasbdmgrCell01/xxl-job-admin-extend_war.ear/xxl-job-admin-extend.war/WEB-INF/classes/mybatis-mapper/XxlJobUserMapper.xml]
### The error may involve com.xxl.job.admin.dao.XxlJobUserDao.loadByUserName-Inline
### The error occurred while setting parameters
### SQL: SELECT t.id, t.username, t.password, t.role, t.permission FROM xxl_job_user t WHERE t.username = ?
### Cause: com.ibm.db2.jcc.am.SqlSyntaxErrorException: DB2 SQL Error: SQLCODE=-204, SQLSTATE=42704, SQLERRMC=DGPUSER.XXL_JOB_USER, DRIVER=3.68.61
; bad SQL grammar []; nested exception is com.ibm.db2.jcc.am.SqlSyntaxErrorException: DB2 SQL Error: SQLCODE=-204, SQLSTATE=42704, SQLERRMC=DGPUSER.XXL_JOB_USER, DRIVER=3.68.61