【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】v6.5.0
按照官方文档 ,执行以下 sql 能够获取到该集群中的所有分区表
select distinct concat(TABLE_SCHEMA,'.',TABLE_NAME)
from information_schema.PARTITIONS
where TABLE_SCHEMA not in ('INFORMATION_SCHEMA','mysql','sys','PERFORMANCE_SCHEMA','METRICS_SCHEMA');
我试验了一下,但是把不是分区表的表也打印出来了
是哪里出现了问题?
应该是文档错误,漏了条件
得加上 PARTITION_NAME is not null
或者 TIDB_PARTITION_ID is not null
可以去反馈区反馈下了
1 个赞
好像没有 TIDB_PARTITION_ID 这个列
发现可以直接通过
show table status
拿到
我再6.5.0里是能看到这个列的
TiDB root@10.18.13.224:INFORMATION_SCHEMA> show create table `PARTITIONS`\G
***************************[ 1. row ]***************************
Table | PARTITIONS
Create Table | CREATE TABLE `PARTITIONS` (
`TABLE_CATALOG` varchar(512) DEFAULT NULL,
`TABLE_SCHEMA` varchar(64) DEFAULT NULL,
`TABLE_NAME` varchar(64) DEFAULT NULL,
`PARTITION_NAME` varchar(64) DEFAULT NULL,
`SUBPARTITION_NAME` varchar(64) DEFAULT NULL,
`PARTITION_ORDINAL_POSITION` bigint(21) DEFAULT NULL,
`SUBPARTITION_ORDINAL_POSITION` bigint(21) DEFAULT NULL,
`PARTITION_METHOD` varchar(18) DEFAULT NULL,
`SUBPARTITION_METHOD` varchar(12) DEFAULT NULL,
`PARTITION_EXPRESSION` longtext DEFAULT NULL,
`SUBPARTITION_EXPRESSION` longtext DEFAULT NULL,
`PARTITION_DESCRIPTION` longtext DEFAULT NULL,
`TABLE_ROWS` bigint(21) DEFAULT NULL,
`AVG_ROW_LENGTH` bigint(21) DEFAULT NULL,
`DATA_LENGTH` bigint(21) DEFAULT NULL,
`MAX_DATA_LENGTH` bigint(21) DEFAULT NULL,
`INDEX_LENGTH` bigint(21) DEFAULT NULL,
`DATA_FREE` bigint(21) DEFAULT NULL,
`CREATE_TIME` datetime DEFAULT NULL,
`UPDATE_TIME` datetime DEFAULT NULL,
`CHECK_TIME` datetime DEFAULT NULL,
`CHECKSUM` bigint(21) DEFAULT NULL,
`PARTITION_COMMENT` varchar(80) DEFAULT NULL,
`NODEGROUP` varchar(12) DEFAULT NULL,
`TABLESPACE_NAME` varchar(64) DEFAULT NULL,
`TIDB_PARTITION_ID` bigint(21) DEFAULT NULL,
`TIDB_PLACEMENT_POLICY_NAME` varchar(64) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin
1 row in set
Time: 0.010s
TiDB root@10.18.13.224:INFORMATION_SCHEMA>
官方文档上也没有看到这个列
我的版本是 5.4.1–>6.1.2–>6.5.0 升上来的 不知道你的6.5是直接安装的还是升级上来的
h5n1
(H5n1)
2023 年3 月 3 日 04:00
7
我觉得是有问题,跟之前一些没有设置tiflash 副本的表一样能在tiflash的系统表里能查出来。 按理说parttitions里应该只有分区表
奇怪,下午来看的时候又有了
mysql> select * from information_schema.partitions where table_schema = "test" limit 1\G
*************************** 1. row ***************************
TABLE_CATALOG: def
TABLE_SCHEMA: test
TABLE_NAME: employees
PARTITION_NAME: P_LT_100
SUBPARTITION_NAME: NULL
PARTITION_ORDINAL_POSITION: 1
SUBPARTITION_ORDINAL_POSITION: NULL
PARTITION_METHOD: RANGE
SUBPARTITION_METHOD: NULL
PARTITION_EXPRESSION: `id`
SUBPARTITION_EXPRESSION: NULL
PARTITION_DESCRIPTION: 100
TABLE_ROWS: 0
AVG_ROW_LENGTH: 0
DATA_LENGTH: 0
MAX_DATA_LENGTH: 0
INDEX_LENGTH: 0
DATA_FREE: 0
CREATE_TIME: 2023-02-28 08:44:47
UPDATE_TIME: NULL
CHECK_TIME: NULL
CHECKSUM: NULL
PARTITION_COMMENT:
NODEGROUP: NULL
TABLESPACE_NAME: NULL
TIDB_PARTITION_ID: 81
TIDB_PLACEMENT_POLICY_NAME: NULL
我记得早上无论是 select 还是 show create table 都没这两行的。
版本是 v6.5.0, 直接部署的。
抱歉,我的问题 , 正常都会有这两列的,没查出来那个是搞混到了 mysql 的结果。
但是主楼的那个情况是 TiDB 的。
考试没答案
(Ti D Ber P Kfity Gq)
2023 年3 月 3 日 08:53
12
我发现 您在 test 库 和 ttt库 一直进行切换。