MyCATApache / Mycat-Server

GNU General Public License v2.0
9.49k stars 3.85k forks source link

mycat集成mysql读写分离异常,标准查询sql,大量跑批偶尔出现ResultSet is from UPDATE. No Data,导致整个跑批过程报废,直连mysql没问题 #2568

Open muoubumu opened 4 years ago

muoubumu commented 4 years ago

ERROR ***** org.springframework.dao.TransientDataAccessResourceException: StatementCallback; SQL [SELECT b.ds AS ds, b.template_sql AS 'sql', a.status,template_id, a.create_user, a.file_path, a.condition, a.create_time, b.can_use_condition, a.apply_id, b.ds FROM export_file_apply AS a LEFT JOIN export_file_template AS b ON a.exp_template_id = b.template_id WHERE a.status in('S', 'F') AND notify_status IN ('W')]; ResultSet is from UPDATE. No Data.; nested exception is java.sql.SQLException: ResultSet is from UPDATE. No Data. at org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.doTranslate(SQLStateSQLExceptionTranslator.java:110) at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72) at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81) at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81) at org.springframework.jdbc.core.JdbcTemplate.translateException(JdbcTemplate.java:1444) at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:388) at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:452) at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:462) at org.springframework.jdbc.core.JdbcTemplate.queryForList(JdbcTemplate.java:490) at com.dtroad.ieasweb.excel.ExcelService.getApplyInfo(ExcelService.java:88) at com.dtroad.ieasweb.common.run.Runnable_notifyDownloadExcel.run(Runnable_notifyDownloadExcel.java:35) at java.lang.Thread.run(Thread.java:745) Caused by: java.sql.SQLException: ResultSet is from UPDATE. No Data. at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:965) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:898) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:887) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:861) at com.mysql.jdbc.ResultSetImpl.next(ResultSetImpl.java:6292) at com.alibaba.druid.pool.DruidPooledResultSet.next(DruidPooledResultSet.java:69) at org.springframework.jdbc.core.RowMapperResultSetExtractor.extractData(RowMapperResultSetExtractor.java:93) a

funnyAnt commented 4 years ago

@muoubumu 这个问题的根源是JDBC驱动select语句收到了错误的OK包导致,是mycat包乱序导致的。 根本原因是mycat不支持批量update/delete的,但是你的应用程序可能开启了批量。 请检查你的驱动里面的参数是否设置正确。 url参数里面的rewriteBatchedStatements务必设置成false,. 有问题qq群里面@funnyAnt