2011-09-29 88 views
4

虽然没有插入的数字是'大',但我在postgres中收到了“整数超出范围”错误。他们远低于一百万。 查询是通过Django ORM生成的,并且非常标准。 任何想法我在这里失踪? 谢谢!PostgreSql将小数字插入整数字段时整数超出范围错误

# INSERT INTO "index_index" ("word_id", "ad_id", "field", "position", "created_at") VALUES (98036, 703906, E'y.x', 0, E'2011-09-29 22:02:40.252332') RETURNING "index_index"."id"; 
ERROR: integer out of range 

# \d index_index; 

Table "public.index_index" 
    Column |   Type   |      Modifiers       
------------+--------------------------+---------------------------------------------------------- 
id   | integer     | not null default nextval('index_index_id_seq'::regclass) 
word_id | integer     | not null 
ad_id  | integer     | not null 
field  | character varying(50) | not null 
position | integer     | not null 
created_at | timestamp with time zone | not null 
Indexes: 
    "index_index_pkey" PRIMARY KEY, btree (id) 
    "index_index_ad_id" btree (ad_id) 
    "index_index_word_id" btree (word_id) 
Foreign-key constraints: 
    "index_index_ad_id_fkey" FOREIGN KEY (ad_id) REFERENCES campaigns_ad(id) DEFERRABLE INITIALLY DEFERRED 
    "index_index_word_id_fkey" FOREIGN KEY (word_id) REFERENCES index_word(id) DEFERRABLE INITIALLY DEFERRED 
+2

什么'NEXTVAL( 'index_index_id_seq')'的价值?你是否超出了你的ID列? nextval返回一个bigint。 –

回答

8

也许序列超过了最大值。整数值(2147483647)。作为一个序列基于bigint,这是可能的。

您可以测试使用SELECT nextval('index_index_id_seq')

+0

谢谢!我没有想到这一点! – Harel