標籤:資料庫 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
附錄
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/84/91/wKiom1eVZ3OwrUhxAACHTw_mQYY833.png-wh_500x0-wm_3-wmp_4-s_1471917698.png" title="整形欄位" alt="wKiom1eVZ3OwrUhxAACHTw_mQYY833.png-wh_50" />
本文出自 “陌路,盡頭” 部落格,請務必保留此出處http://molu2013.blog.51cto.com/2615175/1829524
Postgresql 報整形欄位“integer out of range”