关于字段超长导致的插入错误的提示信息
背景
你们肯定遇到过这样的错误,跑的程序需要插入或更新一张表,值的长度超过字段最大限制而报错。要如何定位是哪个字段长度过小导致的?
方法
1、先要获取错误信息
最直观的是在web页面上爆出这个错误信息(如果有的话),或者日志上找错误信息。有了错误信息之后怎么定位?
2、如何排查?
- 对于mysql,错误提示信息有指示是究竟是哪个字段过短。
- 但是对于pgsql,提示得模糊。
pgsql没有提示出问题的字段名,只能通过 “类型+长度” 来猜是哪个字段过短。
比如pgsql的错误:
value too long for type character varying(20)
出问题的字段首先是character,即字符类型的,varying表示变长的,20表示表中该字段目前的长度,所以综合起来是varchar(20)。有时候光靠这些信息定位不出来,比如同表有两个或多个varchar(20)的字段时,就得查看入表的值才能进一步确定,确实是非常坑的。
实践
1、对于mysql表
insert into employee values(null,'01234567890123456789012345678901234567890123456789A','male',1,'java')
提示得挺清晰的,什么字段长度不足导致错误都有提示
> 1406 - Data too long for column 'name' at row 1
> 时间: 0.037s
2、pgsql
insert into t_test values (1, '0123456789012345678901234567890123456789A','man');
insert into t_test values (2, 'stone','0123456789012345678901234567890123456789A');
错误提示,上面2句执行后,都是一样的提示,没法区分是哪个字段导致的,因为name和remark都是varchar(20)
> ERROR: value too long for type character varying(20)
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/135195.html