0
点赞
收藏
分享

微信扫一扫

PostgreSQL整型字段溢出问题处理案例

背景

临近下班,数据库中数有一张临时表用来做界面展示的,这张表的数据是来自另外一张表,研发反馈程序有异常,无赖的是程序也没有对应的日志,然后从数据库层面进行排查

PostgreSQL整型字段溢出问题处理案例_整型

问题分析

表结构分析

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字段是一个整型,又是一个自增序列,之前跟研发聊过他们的使用的的自研框架,框架会自动生成序列的id值,然后插入数据库中,并不是使用数据库的序列,怀疑问题出现在这里

整体分析

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

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

问题修复

更改id的字段类型为bigint型,然后再让研发确认,已无问题,故障解决

alter table cert_display_tmp alter column id bigint

总结

虽然问题很小,通常都是一些研发上很细节的问题,但是也是最容易出现问题,研发上还是要建议统一的规范

附录

PostgreSQL整型字段溢出问题处理案例_PostgreSQL_02

举报

相关推荐

0 条评论