临界分区查询报错,sql错误1105,interface conversion: interface{} is nil ,not types.Time

【 TiDB 使用环境】测试
【 TiDB 版本】5.7.25-TiDB-v6.5.2
建表语句
CREATE TABLE test1 (
ID VARCHAR(50) NOT NULL COMMENT ‘主键’,
PARTITION_NO INT(11) NOT NULL DEFAULT ‘0’ COMMENT ‘分区’,
CREATE_TIME DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT ‘创建时间’,
PRIMARY KEY (ID,PARTITION_NO,CREATE_TIME) USING BTREE,
INDEX index_partition_no (PARTITION_NO) USING BTREE
)
COMMENT=‘测试表’
ENGINE=InnoDB
PARTITION BY RANGE COLUMNS(PARTITION_NO,CREATE_TIME)
(PARTITION 2023p1 VALUES LESS THAN (200000,‘2023-01-01’),
PARTITION 2023p2 VALUES LESS THAN (300000,‘2023-01-01’));
分区值为200000,查询结果等于200000都会报错,是什么原因?
查询sql
1.SELECT * FROM test1 WHERE PARTITION_NO = 200000
2.SELECT * FROM test1 WHERE PARTITION_NO >= 200000

执行结果都是报错

tidb 的日志上有错误信息么?

没其他信息,200000这个值正好是分区的值,不知道是bug还是我操作错误,官方文档没找到对应的解释

用java jdbc查询一样是提示这个错误,不存在sql工具的问题

CREATE_TIME 是不是定义分区的时候,没按照 dateTime 的要求来? date 就不是有效值?

可以尝试
**


**


时间格式是对的,数据库是一条数据都没

时间格式 '2023-01-01’和’2023-01-01 00:00:00’应该是一样的

tidb应该不会区分不了’yyyy-MM-dd’缺省时分秒

试试再说啊


已经尝试过了

估计是bug 了~ 恭喜中奖~ :upside_down_face:

:joy:没办法,现在只能从业务上面避免这种问题,不知道是bug还是说版本不支持

我本地测试了下,跟这个bug很像,analyze之后再查询会有断开链接的情况,应该是因为什么原因给当成空值处理了
connection disconnected when select * from t as of timestamp NULL · Issue #33728 · pingcap/tidb (github.com)

是个 bug,后续 https://github.com/pingcap/tidb/issues/43459 这个 issue 跟踪

2 个赞

此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。