码迷,mamicode.com
首页 > 数据库 > 详细

Postgresql 报整形字段“integer out of range”

时间:2016-07-25 10:36:48      阅读:249      评论:0      收藏:0      [点我收藏+]

标签:数据库   postgresql   int   

1、背景

节前快要下班的时候,数据库中有一个临时表cert_display_tmp用来做界面展示的,这张表的数据是来自t_cert_sample,张瑛说数据不正确,于是手动执行更新函数,报integer out of range。

2、故障分析

2.1 表结构分析

CREATE TABLE cert_display_tmp
(
  id integer NOT NULL DEFAULT nextval(‘cert_display_tmp2_id_seq‘::regclass),
  cert_id bigint,
  total_sample bigint NOT NULL DEFAULT 0,
  CONSTRAINT cert_display_tmp2_pkey PRIMARY KEY (id)
)

该表的id字段是一个短整形,又是一个自增序列,怀疑问题出现在这个地方

2.2 整体分析

integer类型的范围是( -2147483648 to +2147483647),于是查看了下一个序列值是‘2147483648’,正好超过了integer的范围

postgres=#=> select nextval(‘cert_display_tmp2_id_seq‘);
  nextval  
------------
 2147483648
(1 row)

3、故障解决

更改id的字段类型为bigint型,再次执行函数,无报错,故障解决。

alter table cert_display_tmp alter column id bigint


附录

技术分享

本文出自 “陌路,尽头” 博客,请务必保留此出处http://molu2013.blog.51cto.com/2615175/1829524

Postgresql 报整形字段“integer out of range”

标签:数据库   postgresql   int   

原文地址:http://molu2013.blog.51cto.com/2615175/1829524

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!