相同建表语句tidb系统表information_schema.columns中NUMERIC_PRECISION字段精度不一致问题

【 TiDB 使用环境】生产环境和测试
【 TiDB 版本】V5.4.1
【复现路径】myql和tidb建相同的表
create table testtype
(
test_int int(2),
test_smallint smallint(1),
test_mediumint mediumint(2),
test_bigint bigint(3)
);
MYSQL 版本:5.6.19
【遇到的问题:问题现象及影响】
相同的建表语句系统表中information_schema.columns中精度字段NUMERIC_PRECISION值不一致,
TIDB:


MYSQL:

这个差异是TIDB有特殊功能而设计的吗?
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】

tidb的解释

NUMERIC_PRECISION:对于数字列,为数字精度。

mysql的解释

对于int类型的列,NUMERIC_PRECISION显示的始终是10,而COLUMN_TYPE列中int(xxx)内的长度缺不一定。如果我们在定义表结构,创建了一列为int(3)类型,那么实际上该列还是要占用4字节存储,最多存储10位数字,只是这一列默认显示的时候,会以3格宽度显示罢了。

TIDB中NUMERIC_PRECISION值与实际能存储的精度不符,
比如test_bigint bigint(3),精度是3, 但实际又能存超过精度3的数据

这个值我研究过没啥用,int类型你写1和写100没区别,int bigint 等等都是固定精度

没什么影响吧

精度问题一直是存在的吧。

看解释是可以存超过3精度的,但是显示只显示3精度。没有实际测试过,可以试试。

学习了,有时间自己测试下

这个只影响显示,不影响存储,我记得
可以去 mysql 官网看看

https://dev.mysql.com/doc/refman/8.0/en/numeric-type-attributes.html

:thinking:果然还是得看官方文档啊。