高效发现和解决insert字段长度不够的报错

       早上发现执行的PostgreSQL 存储过程报错,错误如下: 300-value too long for type character varying(100),一看就是表字段的长度太小,从提示看是,字段是varchar(100)的字段长度不够。看了具体表:

 看了表字段,有好多个字段是varcahr(100): 如下图: 

                

    这么多字段varchar(100), 我改那个字段,怎么处理。一个一个试和改?,出错存储过程也就如下:  

        类似语句: INSERT INTO a select  a,b,c from ......

  怎么处理:

       1,要么一个一个字段排除,太花时间,改一个就测试一下,最终找到这个超长的字段

       2,  要么在select 语句中,使用length(字段),检查一下字段,看看哪个字段超过了100长度。

  上面2个办法,都可行,但太花时间了,有没有效率更高效率的解决方法:

      和 PostgreSQL 中使用: create table a1  as (select  a,b,c from ......)    ,  生成一个新表。用这个新表和原有表的结构做对比,就可以发现不一样的情况。

     打开表设计器,copy新表的字段和旧表字段导:Beyond Compare 3进行文本对比

对比发现:

   origin_place在新表是150个字符,在原有表是100,发现就是这个字段有异常。修改origin_place 从varchar(100)改成varchar(200),重新执行存储过程就OK。

 问题解决,时间效率高。

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值