Please try to version 4.0.0-RC3 ------------------
Liang Zhang (John) Apache ShardingSphere & Dubbo xu <[email protected]> 于2019年12月5日周四 上午9:46写道: > 1.The version of shardingsphere I use is 4.0.0-RC1, and the version of > MySQL connector Java driven is 5.1.4 > The error log is as follows: > > > [2019-12-05 09:34:12] DEBUG > org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver(http-nio-8088-exec-10); > :Resolving exception from handler [public net.sf.json.JSONObject > com.jd.bdp.cv.web.controller.CvTaskController.save(com.jd.bdp.cv.domain.CvUser,com.jd.bdp.cv.domain.CvTask,org.springframework.web.multipart.MultipartFile,javax.servlet.http.HttpServletRequest) > throws java.lang.Exception]: > org.springframework.dao.DataIntegrityViolationException: ### Error updating > database. Cause: com.mysql.jdbc.MysqlDataTruncation: Data truncation: > Incorrect datetime value: 'now()' for column 'created' at row 1 ### The > error may involve com.jd.bdp.cv.dao.CvTaskDao.save-Inline ### The error > occurred while setting parameters ### SQL: INSERT INTO cv_task ( team_id, > `name`, `type`, sample_num, status, sample_mark_user_pins, owner, > file_type, audit_type, audit_pins, sample_per_task, amount_per_task, > fault_rate, remarks, creator, created, modifier, modified, deleted, > point_num, extend, file_dir_ids, free_dept_name, free_dept_id, > plat_form_type, jifen,jifen_type, task_budget, need_audit, create_erp, > related_task_id, parent_task_id, is_operate, distribute_number, iou, > dept_name, item_name, item_id, disk_name) VALUES( ?, ?, ?, ?, ?, ?, ?, ?, > ?, ?, ?, ?, ?, ?, ?, now(), ?, now(), 0, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, > ?, ?, ?, ?, ?, ?, ?, ?, ?) ### Cause: com.mysql.jdbc.MysqlDataTruncation: > Data truncation: Incorrect datetime value: 'now()' for column 'created' at > row 1 ; SQL []; Data truncation: Incorrect datetime value: 'now()' for > column 'created' at row 1; nested exception is > com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect datetime > value: 'now()' for column 'created' at row 1 [2019-12-05 09:34:12] DEBUG > org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver(http-nio-8088-exec-10); > :Resolving exception from handler [public net.sf.json.JSONObject > com.jd.bdp.cv.web.controller.CvTaskController.save(com.jd.bdp.cv.domain.CvUser,com.jd.bdp.cv.domain.CvTask,org.springframework.web.multipart.MultipartFile,javax.servlet.http.HttpServletRequest) > throws java.lang.Exception]: > org.springframework.dao.DataIntegrityViolationException: ### Error updating > database. Cause: com.mysql.jdbc.MysqlDataTruncation: Data truncation: > Incorrect datetime value: 'now()' for column 'created' at row 1 ### The > error may involve com.jd.bdp.cv.dao.CvTaskDao.save-Inline ### The error > occurred while setting parameters ### SQL: INSERT INTO cv_task ( team_id, > `name`, `type`, sample_num, status, sample_mark_user_pins, owner, > file_type, audit_type, audit_pins, sample_per_task, amount_per_task, > fault_rate, remarks, creator, created, modifier, modified, deleted, > point_num, extend, file_dir_ids, free_dept_name, free_dept_id, > plat_form_type, jifen,jifen_type, task_budget, need_audit, create_erp, > related_task_id, parent_task_id, is_operate, distribute_number, iou, > dept_name, item_name, item_id, disk_name) VALUES( ?, ?, ?, ?, ?, ?, ?, ?, > ?, ?, ?, ?, ?, ?, ?, now(), ?, now(), 0, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, > ?, ?, ?, ?, ?, ?, ?, ?, ?) ### Cause: com.mysql.jdbc.MysqlDataTruncation: > Data truncation: Incorrect datetime value: 'now()' for column 'created' at > row 1 ; SQL []; Data truncation: Incorrect datetime value: 'now()' for > column 'created' at row 1; nested exception is > com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect datetime > value: 'now()' for column 'created' at row 1 [2019-12-05 09:34:12] DEBUG > org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver(http-nio-8088-exec-10); > :Invoking @ExceptionHandler method: public void > com.jd.bdp.cv.web.controller.ExceptionHandleController.page500(java.lang.Exception,javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) > throws java.lang.Exception [2019-12-05 09:34:12] DEBUG > org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver(http-nio-8088-exec-10); > :Invoking @ExceptionHandler method: public void > com.jd.bdp.cv.web.controller.ExceptionHandleController.page500(java.lang.Exception,javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) > throws java.lang.Exception [2019-12-05 09:34:12] ERROR > com.jd.bdp.cv.web.controller.SqlController(http-nio-8088-exec-10); :系统错误 > org.springframework.dao.DataIntegrityViolationException: ### Error updating > database. Cause: com.mysql.jdbc.MysqlDataTruncation: Data truncation: > Incorrect datetime value: 'now()' for column 'created' at row 1 ### The > error may involve com.jd.bdp.cv.dao.CvTaskDao.save-Inline ### The error > occurred while setting parameters ### SQL: INSERT INTO cv_task ( team_id, > `name`, `type`, sample_num, status, sample_mark_user_pins, owner, > file_type, audit_type, audit_pins, sample_per_task, amount_per_task, > fault_rate, remarks, creator, created, modifier, modified, deleted, > point_num, extend, file_dir_ids, free_dept_name, free_dept_id, > plat_form_type, jifen,jifen_type, task_budget, need_audit, create_erp, > related_task_id, parent_task_id, is_operate, distribute_number, iou, > dept_name, item_name, item_id, disk_name) VALUES( ?, ?, ?, ?, ?, ?, ?, ?, > ?, ?, ?, ?, ?, ?, ?, now(), ?, now(), 0, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, > ?, ?, ?, ?, ?, ?, ?, ?, ?) ### Cause: com.mysql.jdbc.MysqlDataTruncation: > Data truncation: Incorrect datetime value: 'now()' for column 'created' at > row 1 ; SQL []; Data truncation: Incorrect datetime value: 'now()' for > column 'created' at row 1; nested exception is > com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect datetime > value: 'now()' for column 'created' at row 1 at > org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.doTranslate(SQLStateSQLExceptionTranslator.java:101) > at > org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72) > at > org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80) > at > org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80) > at > org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:73) > at > org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:368) > at com.sun.proxy.$Proxy18.insert(Unknown Source) at > org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:240) > at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:46) at > org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:43) at > com.sun.proxy.$Proxy36.save(Unknown Source) at > com.jd.bdp.cv.service.impl.CvTaskServiceImpl.saveTask(CvTaskServiceImpl.java:246) > at > com.jd.bdp.cv.service.impl.CvTaskServiceImpl$$FastClassByCGLIB$$b24d251c.invoke(<generated>) > at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) > at > org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:698) > at > org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) > at > org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:96) > at > org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:260) > at > org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:94) > at > org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) > at > org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:631) > at > com.jd.bdp.cv.service.impl.CvTaskServiceImpl$$EnhancerByCGLIB$$fa2c619b.saveTask(<generated>) > at > com.jd.bdp.cv.web.controller.CvTaskController.saveCvTask(CvTaskController.java:514) > at > com.jd.bdp.cv.web.controller.CvTaskController.save(CvTaskController.java:360) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:497) at > org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:219) > at > org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132) > at > org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104) > at > org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:745) > at > org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:686) > at > org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80) > at > org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925) > at > org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856) > at > org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:936) > at > org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:838) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:661) at > org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) > at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) > at > org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) > at > org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) > at > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198) > at > org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) > at > org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504) > at > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) > at > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) > at > org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650) > at > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) > at > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) > at > org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803) > at > org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) > at > org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:790) > at > org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459) > at > org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) > at > org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) > at java.lang.Thread.run(Thread.java:745) Caused by: > com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect datetime > value: 'now()' for column 'created' at row 1 at > com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3374) at > com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3308) at > com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1837) at > com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1961) at > com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2543) at > com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1737) > at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:998) at > com.alibaba.druid.filter.FilterChainImpl.preparedStatement_execute(FilterChainImpl.java:2931) > at > com.alibaba.druid.filter.FilterEventAdapter.preparedStatement_execute(FilterEventAdapter.java:440) > at > com.alibaba.druid.filter.FilterChainImpl.preparedStatement_execute(FilterChainImpl.java:2929) > at > com.alibaba.druid.proxy.jdbc.PreparedStatementProxyImpl.execute(PreparedStatementProxyImpl.java:118) > at > com.alibaba.druid.pool.DruidPooledPreparedStatement.execute(DruidPooledPreparedStatement.java:493) > at > org.apache.shardingsphere.shardingjdbc.executor.SQLExecuteCallbackFactory$2.executeSQL(SQLExecuteCallbackFactory.java:65) > at > org.apache.shardingsphere.shardingjdbc.executor.SQLExecuteCallbackFactory$2.executeSQL(SQLExecuteCallbackFactory.java:61) > at > org.apache.shardingsphere.core.execute.sql.execute.SQLExecuteCallback.execute0(SQLExecuteCallback.java:69) > at > org.apache.shardingsphere.core.execute.sql.execute.SQLExecuteCallback.execute(SQLExecuteCallback.java:58) > at > org.apache.shardingsphere.core.execute.ShardingExecuteEngine.syncGroupExecute(ShardingExecuteEngine.java:126) > at > org.apache.shardingsphere.core.execute.ShardingExecuteEngine.serialExecute(ShardingExecuteEngine.java:91) > at > org.apache.shardingsphere.core.execute.ShardingExecuteEngine.groupExecute(ShardingExecuteEngine.java:83) > at > org.apache.shardingsphere.core.execute.sql.execute.SQLExecuteTemplate.executeGroup(SQLExecuteTemplate.java:73) > at > org.apache.shardingsphere.core.execute.sql.execute.SQLExecuteTemplate.executeGroup(SQLExecuteTemplate.java:56) > at > org.apache.shardingsphere.shardingjdbc.executor.AbstractStatementExecutor.executeCallback(AbstractStatementExecutor.java:128) > at > org.apache.shardingsphere.shardingjdbc.executor.PreparedStatementExecutor.execute(PreparedStatementExecutor.java:156) > at > org.apache.shardingsphere.shardingjdbc.jdbc.core.statement.ShardingPreparedStatement.execute(ShardingPreparedStatement.java:172) > at sun.reflect.GeneratedMethodAccessor67.invoke(Unknown Source) at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:497) at > org.apache.ibatis.logging.jdbc.PreparedStatementLogger.invoke(PreparedStatementLogger.java:55) > at com.sun.proxy.$Proxy27.execute(Unknown Source) at > org.apache.ibatis.executor.statement.PreparedStatementHandler.update(PreparedStatementHandler.java:41) > at > org.apache.ibatis.executor.statement.RoutingStatementHandler.update(RoutingStatementHandler.java:66) > at > org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:45) > at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:100) at > org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:75) > at > org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:148) > at > org.apache.ibatis.session.defaults.DefaultSqlSession.insert(DefaultSqlSession.java:137) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:497) at > org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:358) > ... 61 more > 2. sql.show: > > > reating a new SqlSession > SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@b2b8f7] > was not registered for synchronization because synchronization is not active > JDBC Connection > [org.apache.shardingsphere.shardingjdbc.jdbc.core.connection.ShardingConnection@181b5b3] > will not be managed by Spring > ooo Using Connection > [org.apache.shardingsphere.shardingjdbc.jdbc.core.connection.ShardingConnection@181b5b3 > ] > ==> Preparing: SELECT count(u.id) FROM cv_user_task u LEFT JOIN cv_task > t on t.id = u.task_id where u.deleted = 0 AND u.team_id = ? and > t.audit_type != 5 > ==> Parameters: 122(Long) > [2019-12-05 09:39:30] INFO ShardingSphere-SQL(http-nio-8088-exec-2); > :Rule Type: sharding > [2019-12-05 09:39:30] INFO ShardingSphere-SQL(http-nio-8088-exec-2); > :Logic SQL: SELECT count(u.id) > FROM cv_user_task u > LEFT JOIN cv_task t on t.id = u.task_id > where u.deleted = 0 > AND u.team_id = ? > > > > > > > and t.audit_type != 5 > [2019-12-05 09:39:30] INFO ShardingSphere-SQL(http-nio-8088-exec-2); > :SQLStatement: > SelectStatement(super=DQLStatement(super=AbstractSQLStatement(type=DQL, > tables=Tables(tables=[Table(name=cv_user_task, alias=Optional.of(u)), > Table(name=cv_task, alias=Optional.of(t))]), > routeConditions=Conditions(orCondition=OrCondition(andConditions=[])), > encryptConditions=Conditions(orCondition=OrCondition(andConditions=[])), > sqlTokens=[TableToken(tableName=cv_user_task, quoteCharacter=NONE, > schemaNameLength=0), TableToken(tableName=cv_task, quoteCharacter=NONE, > schemaNameLength=0)], parametersIndex=1, logicSQL=SELECT count(u.id) > FROM cv_user_task u > LEFT JOIN cv_task t on t.id = u.task_id > where u.deleted = 0 > AND u.team_id = ? > > > > > > > and t.audit_type != 5)), containStar=false, > firstSelectItemStartIndex=7, selectListStopIndex=17, groupByLastIndex=0, > items=[AggregationSelectItem(type=COUNT, innerExpression=(u.id), > alias=Optional.absent(), derivedAggregationSelectItems=[], index=1)], > groupByItems=[], orderByItems=[], limit=null, subqueryStatement=null, > subqueryStatements=[], subqueryConditions=[]) > [2019-12-05 09:39:30] INFO ShardingSphere-SQL(http-nio-8088-exec-2); > :Actual SQL: cv_dataSource ::: SELECT count(u.id) > FROM cv_user_task_0 u > LEFT JOIN cv_task t on t.id = u.task_id > where u.deleted = 0 > AND u.team_id = ? > > > > > > > and t.audit_type != 5 ::: [122] > [2019-12-05 09:39:30] INFO ShardingSphere-SQL(http-nio-8088-exec-2); > :Actual SQL: cv_dataSource ::: SELECT count(u.id) > FROM cv_user_task_1 u > LEFT JOIN cv_task t on t.id = u.task_id > where u.deleted = 0 > AND u.team_id = ? > > > > > > > and t.audit_type != 5 ::: [122] > > > > > > > At 2019-12-04 17:12:38, "[email protected]" <[email protected]> > wrote: > >Hi, > > > >I just answer the questions. > > > >For question 1: > > > >The sharding strategy you provide is too complicated, can you try the > >simple sharding strategy first and make sure the strategy is work fine as > >you want? > >We just concentrate the tech point of ShardingSphere, we need split > >business logic first and then we can discuss about ShardingSphere future. > > > >For question 2: > > > >Please provide your ShardingSphere version number and logs of `sql.show`, > >it is necessary to let us debug and reproduce the bug. > > > >For question 3: > > > >We need logs of `sql.show` to get your actual SQL too, please provide it. > > > > > >A last, I have a suggestion, mailing-list should for search friendly, so > it > >is better separate your 3 questions to 3 different emails and give every > >email a good title. > > > >------------------ > > > >Liang Zhang (John) > >Apache ShardingSphere & Dubbo > > > > > >xu <[email protected]> 于2019年12月4日周三 下午4:53写道: > > > >> Question 1: > >> > >> I have configured a strategy of sub table: > >> > >> The configuration file is as follows: > >> > >> > >> > >> <bean id="preciseModuloTableShardingAlgorithm" > >> class="com.jd.bdp.cv.common.PreciseModuloShardingTableAlgorithm" /> > >> <bean id="rangeModuloShardingTableAlgorithm" > >> class="com.jd.bdp.cv.common.RangeModuloShardingTableAlgorithm" /> > >> > >> <sharding:standard-strategy id="tableShardingStrategy" > >> sharding-column="task_id" > >> precise-algorithm-ref="preciseModuloTableShardingAlgorithm" > >> range-algorithm-ref="rangeModuloShardingTableAlgorithm"/> > >> > >> > >> <sharding:data-source id="shardingDataSource"> > >> <sharding:sharding-rule data-source-names="cv_dataSource"> > >> <sharding:table-rules> > >> <sharding:table-rule logic-table="cv_user_task" > >> actual-data-nodes="cv_dataSource.cv_user_task_${0..1}" > >> table-strategy-ref="tableShardingStrategy" /> > >> </sharding:table-rules> > >> <!-- <sharding:binding-table-rules> > >> <sharding:binding-table-rule > >> logic-tables="t_order,t_order_item"/> > >> </sharding:binding-table-rules> > >> <sharding:broadcast-table-rules> > >> <sharding:broadcast-table-rule table="t_address"/> > >> </sharding:broadcast-table-rules>--> > >> </sharding:sharding-rule> > >> <sharding:props> > >> <prop key="sql.show">true</prop> > >> </sharding:props> > >> </sharding:data-source> > >> > >> > >> > >> > >> > >> My sub table logic is as follows: > >> > >> > >> > >> if (shardingValue.getValue()<7800){ > >> return "cv_user_task_0"; > >> > >> } > >> else { > >> Long modValue = shardingValue.getValue() % tableNames.size(); > >> String modStr = modValue.toString(); > >> for (String each : tableNames) { > >> if (each.endsWith(modStr)) { > >> return each; > >> } > >> } > >> } > >> > >> > >> throw new IllegalArgumentException(); > >> > >> > >> > >> The specific logic is as follows: in order to be compatible with the old > >> data, when the shardingvalue is less than a certain value (such as > 1230), > >> query the previous table, and when it is greater than a certain value, > use > >> the table splitting logic. The sub table logic is routed according to > the > >> modular operation. But I found that this logic did not take effect. > There > >> are two specific problems: > >> > >> 1. When debugging, you can only enter the doshading method for the first > >> time, and then the breakpoint will not enter. > >> > >> 2. All the table fields in my database are smaller than 1230, so the > >> original table CV user task should be selected according to the logic, > but > >> still go to CV user task 0, CV user task 1 from the console > >> > >> > >> > >> And no data can be found. So I suspect that if the table is not defined > in > >> the actual data nodes = "cv_datasource. Cv_user_task" ${0.. 1} ", the > data > >> cannot be queried. After testing, I found that my suspicion is correct. > It > >> can be queried to put the historical data into the two tables CV ﹣ user > ﹣ > >> task ﹣ 0 and CV ﹣ user ﹣ task ﹣ 1. But what about my historical data? > (must > >> data migration be performed) > >> > >> Question two: > >> After I use sharding, the function now () in SQL is not supported (using > >> mybatis) > >> > >> Report errors: > >> > >> Data truncation: Incorrect datetime value: 'now()' for column > >> 'created' at row 1 > >> > >> > >> > >> Question three: > >> > >> > >> > >> To test my sub table logic, it is written as follows: > >> > >> > >> > >> @Override > >> public String doSharding(final Collection<String> tableNames, final > >> PreciseShardingValue<Long> shardingValue) { > >> > >> > >> return "cv_user_task_0"; > >> > >> } > >> > >> I configured the return values to cv_user_task_0 > >> > >> > >> > >> But from the console > >> > >> > >> > >> Both CV user task 0 and CV user task 1 are not valid at all. The queried > >> data is also in the CV user task table. > >> > >> > >> > >> Is it because of my configuration? > >> > >> > >> > >> > >> > >> > >> >
