TIDB使用jdbc查询时报错

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

  • 【TiDB 版本】:V3.0.6
  • 【问题描述】:使用jdbc查询时,报如下错误java.sql.SQLException: inconsistent extra index PRIMARY, handle 3458764513820730228 not found in table;下图为日志信息

若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出打印结果,请务必全选并复制粘贴上传。

麻烦进行一下操作

  1. 调整 gc 时间
update mysql.tidb set VARIABLE_VALUE="72h" where VARIABLE_NAME="tikv_gc_life_time";
  1. 将 table check 信息反馈
ADMIN CHECK TABLE tbl_name [, tbl_name] ...:用于对给定表中的所有数据和对应索引进行一致性校验,若通过校验,则返回空的查询结果;否则返回数据不一致的错误信息。
  1. 麻烦将报错时间点的 tidb、tikv 日志保留,并打包通过邮件方式发给我。E-mail: zhongshu.li@pingcap.com

您好,第一步正常执行,第二步执行之后没有返回错误,日志已发送到邮箱

好的,感谢反馈,我们先看下日志信息。

麻烦执行一下操作,并返回结果。

  1. mysql client 的时候加上 “–column-type-info” 选项,例如“mysql -u xxx -h xxx -P xxx -pxxx --column-type-info";
  2. 执行 select key from f_mid_module_stay_log limit 1 ;

image

麻烦反馈一下操作反馈结果和情况

-- 1. 确认能否查到数据
SELECT * FROM f_mid_module_stay_log WHERE `key` = 'https://www.ministudy.com/4215/JS/mb/azEAZ4/index.html' and 1=1;
-- 2. 确认能否查到数据
select * from t use index () where a = 'http://91ld.com/3616/JS/mb/eLasGo/index.html' and 1=1;

第一个有值 第二个SQL这样写select * from f_mid_module_stay_log use index () where key = ‘http://91ld.com/3616/JS/mb/eLasGo/index.html’ and 1=1;也有值

  1. 在查询事务过程做了那些操作 ?
  2. 现在可以复现点查问题么 ?

现在只有两种操作,一种是upsert操作,一种是点查。这个问题这两天才出现的,但是拿报错的key去客户端查,又没有问题

确认中,稍等

这两天有没有改过jdbc的用法 ? 或者其他的关联的变更操作 ?

这个意思说不能复现么 ?

这个spark任务上线之后,就没有改过了。一个任务只是批量写入,一批次一百条;另一个任务是通过点查,来关联宽表。今天看已经没有那个错误了,但是这个原因具体是什么?

希望提供可复现问题的 jdbc 配置和具体的业务数据、业务 SQL ,我们内部验证一下。如果方面,请将以上敏感信息脱敏后发送至邮箱

E-mail: zhongshu.li@pingcap.com

您好,数据及部分代码已发送成功

我们需要继续分析一下,后面有信息再反馈。

好的,希望可以尽快定位下,这个问题很诡异。

研发同学已经在帮忙查看,有结果再反馈。

好的,有劳大佬了

您好: 我们查看了日志和admin check都没有问题,能否麻烦您在问题出现的时候,开一下general log?多谢. 打开general log: https://github.com/pingcap/tidb/blob/master/docs/tidb_http_api.md, 第20个,在发送sql的tidb server打开,多谢.