关于字段超长导致的插入错误的提示信息(value too long for type character varying)

有目标就不怕路远。年轻人.无论你现在身在何方.重要的是你将要向何处去。只有明确的目标才能助你成功。没有目标的航船.任何方向的风对他来说都是逆风。因此,再遥远的旅程,只要有目标.就不怕路远。没有目标,哪来的劲头?一车尔尼雷夫斯基

导读:本篇文章讲解 关于字段超长导致的插入错误的提示信息(value too long for type character varying),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

关于字段超长导致的插入错误的提示信息

背景

你们肯定遇到过这样的错误,跑的程序需要插入或更新一张表,值的长度超过字段最大限制而报错。要如何定位是哪个字段长度过小导致的?

方法

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

(2)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!