高效发现和解决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。
问题解决,时间效率高。