TIDB日志报错"incorrect string value"什么意思?

【 TiDB 使用环境】生产环境
【 TiDB 版本】
v5.4.3

【遇到的问题:
tidb_tikvclient_backoff_seconds_count 告警,突发峰值很高,设置的告警阈值是1000,达到了5000+
查看tidb日志,有很多 ERROR报错"incorrect string value",这个错是什么意思?有什么影响又该怎么处理呢?

【附件:截图/日志/监控】
prometheus metric:


报错日志截图:

你这报错就是tikv 刚刚经历不可用过程 后来自己恢复了

哎不对, 我发现我的tidb日志,是一直在报 这种错的,跟上面的这个监控异常没关呀。

[ERROR] [column.go:321] [“incorrect string value”] [conn=11734073] [error=“[table:1366]Incorrect string value ‘\xF0\x9F\x87\xA8’ for column ‘signature’”]

字符串值插入到数据库中时,发生了字符集不匹配或不支持的情况

1 个赞

看这报错应该是字符集问题啊

1 个赞

看了下异常监控这个时间范围是的日志,发现有大量的锁冲突日志 “prewrite encounters lock” ,
看来是这个引起的

SHOW VARIABLES LIKE ‘character_set_database’;
看看你数据库设置的字符集吧

1 个赞

那就是说这不是TIDB的问题,是业务端写数据的问题吗?

对的,写入的数据字符集与数据库设置的不一致

比如应用那边设置了是GBK,数据库是utf8mb4 那就要报错了

1 个赞

tidb_tikvclient_backoff_seconds_count 告警,突发峰值很高,设置的告警阈值是1000,达到了5000+
这个报警就是tikv短时间不可用了 要排查问题

1 个赞

好的,感谢~

报错信息中 table:1366 这个对应的是TIDB_TABLE_ID吗? 我查了下INFORMATION_SCHEMA.TABLES表中 TIDB_TABLE_ID字段没有这个id 呢,还是我查的不对呀

我看了下日志,应该就是有大量的写冲突导致的 ,日志有有大量的 “prewrite encounters lock” 。

因为我们是消费的kafka的数据,肯定数据是丢不了的,只是会重试。
我查下为啥会有这么多写冲突

有分区表么?

刚查了下应该所有表都没做过分区

插入了不合适的值造成的

查下监控看下有什么异常

[ERROR] [column.go:321] [“incorrect string value”] [conn=11734073] [error=“[table:1366]Incorrect string value ‘\xF0\x9F\x87\xA8’ for column ‘signature’”]

我这报错的表是哪个这个怎么查?
table:1366 这个找不到这个ID

看下tidb日志或者dashboard搜一下error

我上面发的就是一条完整的tidb日志。
dashboard里面怎么搜呢 没找到有用的