xiangtianyu opened a new issue #7960:
URL: https://github.com/apache/shardingsphere/issues/7960


   I tried to use shardingsphere-proxy do sharing.
   
   My proxy config:
   `
   shardingRule:
     tables:
       system_log:
         actualDataNodes: ds0.system_log_$->{1..12}
         tableStrategy:
           standard:
             shardingColumn: create_time
             preciseAlgorithmClassName: 
com.abup.shardingalgorithm.algorithm.LogShardingAlgorithm
         keyGenerator:
           column: id
           type: SNOWFLAKE
   
   `
   
   LogShardingAlgorithm.java:
   
   `
   public class LogShardingAlgorithm implements PreciseShardingAlgorithm<Date> {
       private static Logger log = 
LoggerFactory.getLogger(LogShardingAlgorithm.class);
       @Override
       public String doSharding(Collection<String> collection, 
PreciseShardingValue<Date> preciseShardingValue) {
   
           Date date = preciseShardingValue.getValue();
   
           Calendar calendar = Calendar.getInstance();
           calendar.setTime(date);
   
           int month = calendar.get(Calendar.MONTH) + 1;
   
           System.out.println("month: " + month);
   
           return preciseShardingValue.getLogicTableName() + "_" + month;
       }
   }
   
   `
   
   My sql:
   
   `
   <insert id="insert" useGeneratedKeys="true" keyProperty="id">
           INSERT INTO `system_log`(`name`,`message`,`create_time`)
           VALUES (#{name},#{message},#{createTime, jdbcType=DATE})
       </insert>
   `
   
   error log:
   
   `
   ### SQL: INSERT INTO `system_log`(`name`,`message`,`create_time`)         
VALUES (?,?,?)
   ### Cause: java.sql.SQLException: 2Unknown exception: [java.lang.String 
cannot be cast to java.util.Date]
   ; uncategorized SQLException; SQL state [C1000]; error code [10002]; 
2Unknown exception: [java.lang.String cannot be cast to java.util.Date]; nested 
exception is java.sql.SQLException: 2Unknown exception: [java.lang.String 
cannot be cast to java.util.Date]] with root cause
   
   java.sql.SQLException: 2Unknown exception: [java.lang.String cannot be cast 
to java.util.Date]
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:965) 
~[mysql-connector-java-5.1.46.jar:5.1.46]
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3976) 
~[mysql-connector-java-5.1.46.jar:5.1.46]
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3912) 
~[mysql-connector-java-5.1.46.jar:5.1.46]
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2530) 
~[mysql-connector-java-5.1.46.jar:5.1.46]
        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2683) 
~[mysql-connector-java-5.1.46.jar:5.1.46]
        at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2486) 
~[mysql-connector-java-5.1.46.jar:5.1.46]
        at 
com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1858) 
~[mysql-connector-java-5.1.46.jar:5.1.46]
        at 
com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1197) 
~[mysql-connector-java-5.1.46.jar:5.1.46]
        at 
com.alibaba.druid.pool.DruidPooledPreparedStatement.execute(DruidPooledPreparedStatement.java:497)
 ~[druid-1.1.21.jar:1.1.21]
        at 
org.apache.ibatis.executor.statement.PreparedStatementHandler.update(PreparedStatementHandler.java:47)
 ~[mybatis-3.5.3.jar:3.5.3]
        at 
org.apache.ibatis.executor.statement.RoutingStatementHandler.update(RoutingStatementHandler.java:74)
 ~[mybatis-3.5.3.jar:3.5.3]
        at 
org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:50) 
~[mybatis-3.5.3.jar:3.5.3]
        at 
org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:117) 
~[mybatis-3.5.3.jar:3.5.3]
        at 
org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:76) 
~[mybatis-3.5.3.jar:3.5.3]
        at 
org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:197)
 ~[mybatis-3.5.3.jar:3.5.3]
        at 
org.apache.ibatis.session.defaults.DefaultSqlSession.insert(DefaultSqlSession.java:184)
 ~[mybatis-3.5.3.jar:3.5.3]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
~[na:1.8.0_212-3-redhat]
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
~[na:1.8.0_212-3-redhat]
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 ~[na:1.8.0_212-3-redhat]
        at java.lang.reflect.Method.invoke(Method.java:498) 
~[na:1.8.0_212-3-redhat]
        at 
org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:426)
 ~[mybatis-spring-2.0.3.jar:2.0.3]
        at com.sun.proxy.$Proxy52.insert(Unknown Source) ~[na:na]
        at 
org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:271) 
~[mybatis-spring-2.0.3.jar:2.0.3]
        at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:62) 
~[mybatis-3.5.3.jar:3.5.3]
        at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:93) 
~[mybatis-3.5.3.jar:3.5.3]
        at com.sun.proxy.$Proxy53.insert(Unknown Source) ~[na:na]
        at 
com.shardingsphere.demo.service.impl.LogServiceImpl.insert(LogServiceImpl.java:22)
 ~[classes/:na]
        at 
com.shardingsphere.demo.controller.LogController.insertLog(LogController.java:38)
 ~[classes/:na]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
~[na:1.8.0_212-3-redhat]
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
~[na:1.8.0_212-3-redhat]
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 ~[na:1.8.0_212-3-redhat]
        at java.lang.reflect.Method.invoke(Method.java:498) 
~[na:1.8.0_212-3-redhat]
        at 
org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
 ~[spring-web-5.2.9.RELEASE.jar:5.2.9.RELEASE]
        at 
org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
 ~[spring-web-5.2.9.RELEASE.jar:5.2.9.RELEASE]
        at 
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)
 ~[spring-webmvc-5.2.9.RELEASE.jar:5.2.9.RELEASE]
        at 
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:878)
 ~[spring-webmvc-5.2.9.RELEASE.jar:5.2.9.RELEASE]
        at 
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:792)
 ~[spring-webmvc-5.2.9.RELEASE.jar:5.2.9.RELEASE]
        at 
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
 ~[spring-webmvc-5.2.9.RELEASE.jar:5.2.9.RELEASE]
        at 
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
 ~[spring-webmvc-5.2.9.RELEASE.jar:5.2.9.RELEASE]
        at 
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
 ~[spring-webmvc-5.2.9.RELEASE.jar:5.2.9.RELEASE]
        at 
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
 ~[spring-webmvc-5.2.9.RELEASE.jar:5.2.9.RELEASE]
        at 
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)
 ~[spring-webmvc-5.2.9.RELEASE.jar:5.2.9.RELEASE]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:626) 
~[tomcat-embed-core-9.0.38.jar:4.0.FR]
        at 
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
 ~[spring-webmvc-5.2.9.RELEASE.jar:5.2.9.RELEASE]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:733) 
~[tomcat-embed-core-9.0.38.jar:4.0.FR]
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
 ~[tomcat-embed-core-9.0.38.jar:9.0.38]
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
 ~[tomcat-embed-core-9.0.38.jar:9.0.38]
        at 
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) 
~[tomcat-embed-websocket-9.0.38.jar:9.0.38]
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
 ~[tomcat-embed-core-9.0.38.jar:9.0.38]
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
 ~[tomcat-embed-core-9.0.38.jar:9.0.38]
        at 
org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
 ~[spring-web-5.2.9.RELEASE.jar:5.2.9.RELEASE]
        at 
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
 ~[spring-web-5.2.9.RELEASE.jar:5.2.9.RELEASE]
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
 ~[tomcat-embed-core-9.0.38.jar:9.0.38]
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
 ~[tomcat-embed-core-9.0.38.jar:9.0.38]
        at 
org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
 ~[spring-web-5.2.9.RELEASE.jar:5.2.9.RELEASE]
        at 
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
 ~[spring-web-5.2.9.RELEASE.jar:5.2.9.RELEASE]
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
 ~[tomcat-embed-core-9.0.38.jar:9.0.38]
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
 ~[tomcat-embed-core-9.0.38.jar:9.0.38]
        at 
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
 ~[spring-web-5.2.9.RELEASE.jar:5.2.9.RELEASE]
        at 
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
 ~[spring-web-5.2.9.RELEASE.jar:5.2.9.RELEASE]
        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
 ~[tomcat-embed-core-9.0.38.jar:9.0.38]
        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
 ~[tomcat-embed-core-9.0.38.jar:9.0.38]
        at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
 ~[tomcat-embed-core-9.0.38.jar:9.0.38]
        at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
 [tomcat-embed-core-9.0.38.jar:9.0.38]
        at 
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
 [tomcat-embed-core-9.0.38.jar:9.0.38]
        at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143) 
[tomcat-embed-core-9.0.38.jar:9.0.38]
        at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) 
[tomcat-embed-core-9.0.38.jar:9.0.38]
        at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
 [tomcat-embed-core-9.0.38.jar:9.0.38]
        at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) 
[tomcat-embed-core-9.0.38.jar:9.0.38]
        at 
org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374) 
[tomcat-embed-core-9.0.38.jar:9.0.38]
        at 
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
 [tomcat-embed-core-9.0.38.jar:9.0.38]
        at 
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
 [tomcat-embed-core-9.0.38.jar:9.0.38]
        at 
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1590)
 [tomcat-embed-core-9.0.38.jar:9.0.38]
        at 
org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) 
[tomcat-embed-core-9.0.38.jar:9.0.38]
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 
[na:1.8.0_212-3-redhat]
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 
[na:1.8.0_212-3-redhat]
        at 
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
 [tomcat-embed-core-9.0.38.jar:9.0.38]
        at java.lang.Thread.run(Thread.java:748) [na:1.8.0_212-3-redhat]
   
   `
   
   proxy error
   `
   [ERROR] 16:51:13.042 [ShardingSphere-Command-9] 
o.a.s.s.f.c.CommandExecutorTask - Exception occur:
   java.lang.ClassCastException: java.lang.String cannot be cast to 
java.util.Date
           at 
com.abup.shardingalgorithm.algorithm.LogShardingAlgorithm.doSharding(LogShardingAlgorithm.java:25)
           at 
org.apache.shardingsphere.core.strategy.route.standard.StandardShardingStrategy.doSharding(StandardShardingStrategy.java:78)
           at 
org.apache.shardingsphere.core.strategy.route.standard.StandardShardingStrategy.doSharding(StandardShardingStrategy.java:59)
           at 
org.apache.shardingsphere.sharding.route.engine.type.standard.ShardingStandardRoutingEngine.routeTables(ShardingStandardRoutingEngine.java:214)
           at 
org.apache.shardingsphere.sharding.route.engine.type.standard.ShardingStandardRoutingEngine.route0(ShardingStandardRoutingEngine.java:195)
           at 
org.apache.shardingsphere.sharding.route.engine.type.standard.ShardingStandardRoutingEngine.routeByShardingConditionsWithCondition(ShardingStandardRoutingEngine.java:121)
           at 
org.apache.shardingsphere.sharding.route.engine.type.standard.ShardingStandardRoutingEngine.routeByShardingConditions(ShardingStandardRoutingEngine.java:115)
           at 
org.apache.shardingsphere.sharding.route.engine.type.standard.ShardingStandardRoutingEngine.getDataNodes(ShardingStandardRoutingEngine.java:96)
           at 
org.apache.shardingsphere.sharding.route.engine.type.standard.ShardingStandardRoutingEngine.route(ShardingStandardRoutingEngine.java:74)
           at 
org.apache.shardingsphere.sharding.route.engine.ShardingRouteDecorator.decorate(ShardingRouteDecorator.java:69)
           at 
org.apache.shardingsphere.sharding.route.engine.ShardingRouteDecorator.decorate(ShardingRouteDecorator.java:53)
           at 
org.apache.shardingsphere.underlying.route.DataNodeRouter.executeRoute(DataNodeRouter.java:91)
           at 
org.apache.shardingsphere.underlying.route.DataNodeRouter.route(DataNodeRouter.java:76)
           at 
org.apache.shardingsphere.underlying.pluggble.prepare.SimpleQueryPrepareEngine.route(SimpleQueryPrepareEngine.java:54)
           at 
org.apache.shardingsphere.underlying.pluggble.prepare.BasePrepareEngine.executeRoute(BasePrepareEngine.java:96)
           at 
org.apache.shardingsphere.underlying.pluggble.prepare.BasePrepareEngine.prepare(BasePrepareEngine.java:83)
           at 
org.apache.shardingsphere.shardingproxy.backend.communication.jdbc.wrapper.StatementExecutorWrapper.doShardingRoute(StatementExecutorWrapper.java:80)
           at 
org.apache.shardingsphere.shardingproxy.backend.communication.jdbc.wrapper.StatementExecutorWrapper.route(StatementExecutorWrapper.java:63)
           at 
org.apache.shardingsphere.shardingproxy.backend.communication.jdbc.JDBCDatabaseCommunicationEngine.execute(JDBCDatabaseCommunicationEngine.java:74)
   
   `
   
   Why the program throw a ClassCastException?


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to