【TiDB 使用环境】生产环境
【TiDB 版本】V8.1.0
【操作系统】Rocky Linux
【部署方式】机器部署
【集群数据量】
【集群节点数】
【问题复现路径】
【遇到的问题:问题现象及影响】
执行如下语句报字段超长,但是没提示具体是那个字段
insert into dwd_dev_test_data_range_pass(sh_name, age, id_zkuytv, md5_urfbck, mapped_ulenqx, log_id_irkxom)
select sh_name, age, id_zkuytv, md5_urfbck, mapped_ulenqx, log_id_irkxom from dwd_dev_test_data_range;
xfworld
(魔幻之翼)
3

看下表结构啊,上面些了 field len = 2
diwing
(Ti D Ber R Qstj35v)
4

我这边提示没问题。去命令行试试呢,字段又不多,看都看的过来
字段长度为2,数据长度为13;这个很显现了,看写的表结构那些满足,再看查询的语句,哪些字段长度会超
Kongdom
(Kongdom)
7
这个确实没什么好办法,只能先把长度为2的字段都找出来,然后再按字段去找insert的数据。
zhanggame1
(Ti D Ber G I13ecx U)
9
建个临时表插入临时表,然后char_length函数看
orz小蓝
(小蓝)
11
对比下表结构,然后找下 字段长度为2,数据长度为13的那个 就是他了
1 个赞
生产环境中,字段有大几十个,遇到这种问题比较麻烦
insert into是可以提示字段名的,但是我这种写法就不提示字段名
乡在人间
(Ti D Ber Ki Nyc B Fs)
14
查询下表每个列的Max(length),然后再比较待插入表的列长度,貌似只能这样了。。。
把表结构粘到excel表格中,看varchar(2)或char(2)的字段,不是所有的字段都要看。
sh_name, age, id_zkuytv, md5_urfbck, mapped_ulenqx, log_id_irkxom ,就这六个字段啊?
两个表之间通过查询插入数据,最好是源表和目的表的字段类型一致,字段字段源表和目的表一致或源表小于等于目的表
逍遥_猫
21
看下表结构,提示里有 field len 2 ,这个基本就能看到是那个字段