高效发现和解决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。

 问题解决,时间效率高。

 

posted @ 2023-12-31 17:44  zping  阅读(154)  评论(0编辑  收藏  举报