puredba
(Puredba)
2019 年12 月 12 日 06:10
1
为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【TiDB 版本】:3.0.2
【问题描述】:从mysql客户端登陆TIDB的时候,访问information_schema.KEY_COLUMN_USAGE 表的时候会报ERROR 2013 (HY000): Lost connection to MySQL server during query。
访问其他任何表都没有问题。检查没有出现OOM,在日志中有panic, 下面是日志
若提问为性能优化、故障排查 类问题,请下载脚本 运行。终端输出的打印结果,请务必全选 并复制粘贴上传。
yilong
(yi888long)
2019 年12 月 12 日 06:22
2
只要涉及到这个表,就会报错吗? 能否试一下count这个表的数据量,看下是否报错?
小王同学
2019 年12 月 12 日 06:49
4
提供下 tidb_stderr.log 的日志吧,我们看下是否是已知问题。
puredba
(Puredba)
2019 年12 月 12 日 06:58
5
好的,pd_stderr.log和tikv_stderr.log是空的,tidb_stderr.log就一行数据,而且是之前的。
@puredba 是不是在建表时有用到 foreign key ?
下面是复现 sql, drop column 时没有check foreign key, 导致后面查询 KEY_COLUMN_USAGE 时 panic。
create table t1 (a int,b int);
create table t2 (c int,d int,foreign key (d) references t1 (b));
alter table t2 drop column d;
select count(*) from information_schema.KEY_COLUMN_USAGE;
puredba
(Puredba)
2019 年12 月 13 日 03:20
9
你好,我查过了系统表,目前只有primary key 和unique,目前没有发现其他的约束,可以通过其他方式来查看之前有创建过外键吗?那现在这个问题怎么来解决呢?
@puredba , 其他的系统表查不到 foreign key 的信息,show create table 也show 不出来。以前支持 foreign key 只是为了方便和 mysql 同步数据。
现在要查哪个表建立过外键,只能拿 ddl history 后, 用 foreign key 搜索:
curl "http://$TiDB_IP:10080/ddl/history" > ddl-history.txt
grep -i 'foreign' ddl-history.txt
然后把相应的 table 的 foreign key 删除:
alter table t_xx drop foreign key xxx;
system
(system)
关闭
2022 年10 月 31 日 19:11
13
此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。